2

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

4

1 回答 1

1

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

通过设置dataType: 'jsonp'jQuery

添加一个额外的“?callback =?” 到 URL 的末尾以指定回调

这导致了一个问题,因为您还在url值中添加了一个回调函数。

要覆盖它,您可以添加以下jsonp选项:

覆盖 jsonp 请求中的回调函数名称。在“callback=?”中将使用该值代替“callback” url 中查询字符串的一部分。

您还可以将其指定data为单独的选项(请参阅将数据发送到服务器),我也在下面添加了该选项。

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

$.ajax({
  url: 'http://website.hostname.com/validatepostcode.dot',
  type: 'get',
  data: {postcode: encodeURIComponent(thepostcode)},
  dataType: 'jsonp',
  jsonp: 'parseResponse'
});
于 2013-05-01T14:11:23.587 回答