Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery理解JSONP有困难_Javascript_Ajax_Jquery_Jsonp - Fatal编程技术网

Javascript 使用jQuery理解JSONP有困难

Javascript 使用jQuery理解JSONP有困难,javascript,ajax,jquery,jsonp,Javascript,Ajax,Jquery,Jsonp,如果我希望从远程服务器获取数据,那么我认为JSONP是首选的工具。但我对我看到的一个例子感到困惑: <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $.ajax({

如果我希望从远程服务器获取数据,那么我认为JSONP是首选的工具。但我对我看到的一个例子感到困惑:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script type="text/javascript">

    $(document).ready(function() {

        $.ajax({
            dataType: 'jsonp',
            data: 'p3=c',
            jsonp: 'callback',
            url: 'http://someserver.com/app?p1=a&p2=b',
            success: function (data) {
                console.log("data="+data);

                $.each(data, function (i, r) {
                    console.log("i="+i);
                    console.log("r="+r);
                });
            },
        });
    });

</script>
所以我的第一个问题是:

(1) 应用程序所做的一切是否正确

(2) jQuery/JSONP实际上为我们做了什么

我假设jQuery将看到“jsonp”的数据类型,在DOM中插入一个脚本标记,然后浏览器将下载并执行该脚本。如果是这样,jQuery是否创建了函数jQuery1234567890,其实现是将参数传递给success函数

(3) 我的理解正确吗(我认为不正确)

谢谢,

保罗

(1) 应用程序所做的一切是否正确

是的,这是正确的JSONP格式

(2) jQuery/JSONP实际上为我们做了什么

通过在请求中放置
&callback=jQuery1234567890
通知服务器应用程序需要JSONP

我假设jQuery将看到“jsonp”的数据类型,在DOM中插入一个脚本标记,然后浏览器将下载并执行该脚本。如果是这样,jQuery是否创建了函数jQuery1234567890,其实现是将参数传递给success函数

(3) 我的理解正确吗(我认为不正确)

是的,你的理解是正确的。它创建了一个带有
jQuery1234567890
函数的
script
,该函数在加载请求的脚本时调用。如您所述,参数接收数据并将其传递到
$.ajax
内部,该内部调用
成功
回调

(1) 应用程序所做的一切是否正确

是的,这是正确的JSONP格式

(2) jQuery/JSONP实际上为我们做了什么

通过在请求中放置
&callback=jQuery1234567890
通知服务器应用程序需要JSONP

我假设jQuery将看到“jsonp”的数据类型,在DOM中插入一个脚本标记,然后浏览器将下载并执行该脚本。如果是这样,jQuery是否创建了函数jQuery1234567890,其实现是将参数传递给success函数

(3) 我的理解正确吗(我认为不正确)


是的,你的理解是正确的。它创建了一个带有
jQuery1234567890
函数的
script
,该函数在加载请求的脚本时调用。如您所述,参数接收数据并将其传递到
$.ajax
内部,该内部调用
成功
回调来自
ajax
文档的
jsonp
选项:

重写jsonp中的回调函数名 要求将在中使用此值而不是“回调” url中查询字符串的“callback=?”部分。所以 {jsonp:'onJSONPLoad'}将导致将'onJSONPLoad=?'传递给 服务器

因此,使用
jsonp:'callback'
callback
覆盖
callback
,实际上什么也不做


您看到的其他内容是由jQuery生成的,这样您就不必自己做了。您可以像jquery中的任何其他ajax请求一样简单地处理此请求,而不必担心jsonp的实现。

来自
jsonp
选项的
ajax
文档:

重写jsonp中的回调函数名 要求将在中使用此值而不是“回调” url中查询字符串的“callback=?”部分。所以 {jsonp:'onJSONPLoad'}将导致将'onJSONPLoad=?'传递给 服务器

因此,使用
jsonp:'callback'
callback
覆盖
callback
,实际上什么也不做

您看到的其他内容是由jQuery生成的,这样您就不必自己做了。您可以像jquery中的任何其他ajax请求一样简单地处理此请求,而不必担心jsonp的实现。

Hi Paul,please Hi Paul,please
jQuery1234567890([{"x":"100","y":"101"},{"x":"200","y":"201"}])