【问题标题】:jsonp callback function not getting calledjsonp回调函数没有被调用
【发布时间】: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' })

标签: asp.net jquery jsonp dotcms


【解决方案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。它有助于。现在又遇到了一个问题。执行进入回调函数后,我试图通过动态设置其动作属性来发布表单。而这并没有发生。它总是重定向到自我。我将为此提出单独的帖子。
猜你喜欢
  • 1970-01-01
  • 2013-10-21
  • 2013-02-16
  • 1970-01-01
  • 2013-06-17
  • 2012-06-25
  • 2017-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多