2012-03-16 108 views
4

我需要做一个JSONP调用。为什么jQuery ajax(JSONP)在没有`&callback =`的情况下工作,但失败时出现`&callback = functionname`

的Ajax函数调用:

$.ajax({ 
    url: myPath, 
    dataType: 'jsonp', 
    success: function(data) { 
     alert("hello"); 
    } 
}); 

的getJSON函数调用:

$.getJSON(myPath + '&callback=prova?', function(data) { 
    alert("hello"); 
}); 

用的getJSON(使用&回调= PROVA设置JSONP协议),我得到一个错误200。阿贾克斯()的工作原理以及。为什么?我想在这里使用的getJSON ...

+1

问号查询字符串的末尾看起来不正确。 – 2012-03-16 10:33:35

+1

AFAIK代码200不应该是一个错误,[请参阅此处]](http://en.wikipedia.org/wiki/List_of_HTTP_status_codes) – themarcuz 2012-03-16 10:34:52

+0

您是否在服务器端检查过在这两种情况下发出的请求是否相同?如果它是你的服务器,你应该能够在日志中找到URL,否则你总是可以使用网络嗅探。 – 2012-03-16 10:35:00

回答

3

您应该使用callback=?而不是callback=prova?如果你希望你的请求被视为JSONP:

$.getJSON(myPath + '&callback=?', function(data) { 
    alert("hello"); 
}); 
​ 
-1

在尝试此

$.getJSON(myPath + '?callback=prova', function(data) { 
    alert("hello"); 
}); 
+0

这不起作用,因为jQuery使用自己的自定义回调名称(每次调用ajax函数时都是唯一且不同的)。它必须是“'&callback =?'”(实际上可以省略它,因为jQuery会检测到不同的主机名并为你附加'&callback = 1')。然后jQuery将用正确的回调函数名称替换'?'。 – Krinkle 2012-03-19 11:02:09

相关问题