Каковы различия между JSON и JSONP?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
        int a;
        char b[20];
        printf("Input your ID: ");
        scanf("%d", &a);
        getchar();
        printf("Input your name: ");
        gets(b);
        printf("---------");
        printf("Name: %s", b);
        return 0;
}



Note: 
  If you use the scanf first and the fgets second, it will give problem only. It will not read the second character for the gets function. 

  If you press enter, after give the input for scanf, that enter character will be consider as a input f or fgets.
379
задан Mohammad 22 May 2010 в 07:09
поделиться

4 ответа

JSONP - это JSON с заполнением, то есть вы помещаете строку в начало и заключаете ее в круглые скобки. Например:

//JSON
{"name":"stackoverflow","id":5}
//JSONP
func({"name":"stackoverflow","id":5});

В результате вы можете загрузить JSON как файл сценария. Если вы ранее настроили функцию с именем func , то эта функция будет вызываться с одним аргументом, которым являются данные JSON, когда файл сценария будет загружен. Обычно это используется для обеспечения межсайтового AJAX с данными JSON. Если вы знаете, что example.com обслуживает файлы JSON, которые выглядят как приведенный выше пример JSONP, то вы можете использовать следующий код для его получения, даже если вы не находитесь в домене example.com:

function func(json){
  alert(json.name);
}
var elm = document.createElement("script");
elm.setAttribute("type", "text/javascript");
elm.src = "http://example.com/jsonp";
document.body.appendChild(elm);
398
ответ дан 22 November 2019 в 23:51
поделиться

По сути, вам не разрешено запрашивать данные JSON из другого домена через AJAX из-за политики того же происхождения. AJAX позволяет получать данные после того, как страница уже загружена, а затем выполнять некоторый код / ​​вызывать функцию после ее возврата. Мы не можем использовать AJAX, но нам разрешено вставлять теги