jsonp回调函数没有被调用
Posted
技术标签:
【中文标题】jsonp回调函数没有被调用【英文标题】:jsonp callback function not getting called 【发布时间】:2013-04-25 12:22:42 【问题描述】:我正在使用 dataType 作为 jsonp 进行跨域 AJAX 调用。我在 URL 中设置了 Jsoncallback 查询字符串参数。但是,回调函数根本没有被调用,而是页面被重定向到自身。
AJAX 调用基本上是点击一个点 CMS 服务,当我直接在浏览器中对其进行测试时,它会返回以下响应:
myfunction('state':'MEL', 'plan':'true' )
这里,“myfunction”是我作为URL中Jsoncallback参数的值传递的字符串
这是我的 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 调用中是否缺少任何参数?还是服务端有问题?
【问题讨论】:
点 CMS 服务读取我发送的查询字符串参数,并以 jsonp 格式返回响应,该响应包含在该函数名称中,例如 myfunction('state':'MEL', 'plan':'true' ) 【参考方案1】:$.ajax
jQuery 函数具有特定的配置选项,用于提供代码中似乎缺少的回调函数的名称。
通过设置dataType: 'jsonp'
jQuery
添加一个额外的“?callback=?”到 URL 的末尾以指定回调
这会导致问题,因为您还在 url
值中添加了一个回调函数。
要覆盖它,您可以添加 jsonp
选项:
覆盖 jsonp 请求中的回调函数名称。在“callback=?”中将使用该值代替“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'
);
【讨论】:
谢谢..我会试试并告诉你。 谢谢@andyb。它有助于。现在又遇到了一个问题。执行进入回调函数后,我试图通过动态设置其动作属性来发布表单。而这并没有发生。它总是重定向到自我。我将为此提出单独的帖子。以上是关于jsonp回调函数没有被调用的主要内容,如果未能解决你的问题,请参考以下文章