jsonp回调函数没有被调用

问题描述:

我正在做一个跨数据库AJAX调用dataType为jsonp。我在URL中设置了Jsoncallback querystring参数。但是,回调函数根本没有被调用,而是页面被重定向到自身。jsonp回调函数没有被调用

的AJAX调用基本上击打点CMS服务,当我在浏览器直接测试它返回以下响应:

myfunction({'state':'MEL', 'plan':'true' }) 

这里,“myfunction的”是我通过作为Jsoncallback参数的值的字符串在URL

这里是我的AJAX调用

$.ajax({ 
    url:"http://website.hostname.com/validatepostcode.dot?postcode="+encodeURIComponent(thepostcode)+ "&Jsoncallback=parseResponse", 
    dataType: "jsonp", 
    async: false, 
    crossDomain:true 
    }); 


function parseResponse(data) 
{ 
alert(data); 
} 

我缺少的AJAX调用任何参数?或者服务端可能有问题?

+0

的点CMS服务读取我发送查询字符串参数,并返回包裹在像myfunction的函数名JSONP格式的响应({“状态”:“MEL”,“方案”:“真”}) – 2013-05-01 13:46:05

$.ajax jQuery函数具有特定的配置选项,用于提供似乎从代码中缺少的回调函数的名称。

通过设置dataType: 'jsonp' jQuery的

增加一个额外的 “?回调=?”您网址的结尾指定回调

这是造成一个问题,因为你也是在url增值的回调函数。

要覆盖这一点,你可以添加jsonp选项其中:

覆盖在JSONP请求的回调函数的名称。这个值将被用来代替'callback =?'中的'回调'。部分查询字符串在url中。

您也可以指定data作为一个单独的选项(参见Sending Data to the server),我也加入以下。

以下代码应正确使用parseResponse()作为回调函数。

$.ajax({ 
    url: 'http://website.hostname.com/validatepostcode.dot', 
    type: 'get', 
    data: {postcode: encodeURIComponent(thepostcode)}, 
    dataType: 'jsonp', 
    jsonp: 'parseResponse' 
}); 
+0

谢谢..我会尝试它,让你知道。 – 2013-05-01 16:01:23

+1

谢谢@andyb。它有助于。现在又多了一个问题。执行进入回调函数后,我试图通过动态设置其action属性来发布表单。这没有发生。它总是重定向到自我。我将为此提出单独的帖子。 – 2013-05-02 04:52:23