我正在使用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调用中缺少任何参数吗?或者服务方面可能有问题?
答案 0 :(得分:1)
$.ajax
jQuery函数具有特定的配置选项,用于提供代码中似乎缺少的回调函数的名称。
设置dataType: 'jsonp'
jQuery
添加额外的“?callback =?”到URL的末尾以指定回调
导致问题,因为您还在url
值中添加了回调函数。
要覆盖此选项,您可以添加jsonp
选项:
覆盖jsonp请求中的回调函数名称。在'callback =?'中将使用此值代替'callback'网址中查询字符串的一部分。
您还可以将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'
});