jsonp回调函数没有被调用

时间:2013-05-01 13:42:36

标签: asp.net jquery jsonp dotcms

我正在使用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调用中缺少任何参数吗?或者服务方面可能有问题?

1 个答案:

答案 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'
});