当前位置: 首页 > 面试题库 >

带有jQuery AJAX的JSONP的回调函数

壤驷雅达
2023-03-14
问题内容

我不太了解如何使用jQuery的ajax函数的回调。

我在JavaScript中有以下代码:

try {
    $.ajax({
        url: 'http://url.of.my.server/submit?callback=?',
        cache: false,
        type: 'POST',
        data: $("#survey").serialize(),
        dataType: "jsonp",
        timeout: 200,
        crossDomain: true,
        jsonp: 'jsonp_callback',
        success: function (data, status) {
            mySurvey.closePopup();
        },
        error: function (xOptions, textStatus) {
            mySurvey.closePopup();
        }
    });
} catch (err) {
    mySurvey.closePopup();
}

服务器端(AppEngine / Python),我获取了回调参数的值并使用

self.response.headers['Content-Type'] = 'application/json; charset=utf-8'
self.response.out.write(callback + '({"msg": "ok"});')

但是随后我"Error: jQuery152042227689944248825_1317400799214 is not a function"在浏览器控制台中看到了。

处理此问题的正确方法是什么?现在,我得到了所需的结果,但是我知道这不正确的事实困扰着我。


问题答案:

这就是我在我身上所做的

$(document).ready(function() {
  if ($('#userForm').valid()) {
    var formData = $("#userForm").serializeArray();
    $.ajax({
      url: 'http://www.example.com/user/' + $('#Id').val() + '?callback=?',
      type: "GET",
      data: formData,
      dataType: "jsonp",
      jsonpCallback: "localJsonpCallback"
    });
  });

function localJsonpCallback(json) {
  if (!json.Error) {
    $('#resultForm').submit();
  } else {
    $('#loading').hide();
    $('#userForm').show();
    alert(json.Message);
  }
}


 类似资料:
  • 问题内容: 我正在编写一个通用函数,该脚本将在脚本的多个位置重用。 该函数使用ajax(使用jQuery库),所以我想以某种方式将一个函数(或代码行)传递给该函数以在ajax完成时执行。我相信这应该是一个回调函数,但是在阅读了一些回调答案之后,我仍然对如何实现这种情况感到困惑。 我当前的功能是: 有了这个功能,我希望能够以与其他jQuery功能相同的方式来做某事,即: 问题答案: 只需为函数提供另

  • 问题内容: 您能否举一个使用jquery读取jsonp请求的非常简单的示例?我就是无法正常工作。 问题答案: 这是工作示例: 注意所请求URL的末尾。这表明我们要使用JSONP。删除它,将使用原始的JSON请求。由于相同的原产地政策而失败。 您可以在JQuery网站上找到更多信息和示例:http : //api.jquery.com/jQuery.getJSON/

  • 问题内容: 我正在编写一个AJAX函数,该函数从JSON Python Web服务请求数据。我的AJAX请求如下所示: 现在,我的python网络服务具有一个处理对“ / blah”的请求的函数,该函数具有以下return语句: 我的AJAX函数无法从Python Web服务成功检索响应,但是在Firebug中没有出现任何错误。我的网络服务或JavaScript做错了什么? 问题答案: 当您使用J

  • 所以问题是在这种情况下notificationPhoneNumber对象锁定了多长时间?它是否会在线程完成其工作时被锁定?

  • 问题内容: Scipy最小化功能(仅作为示例使用)可以选择在每个步骤中添加一个回调函数。所以我可以做类似的事情, 有没有办法使用回调函数来创建fmin的生成器版本,以便我可以做, 似乎可以将收益和收益进行某种组合,但我可以想到任何事情。 问题答案: 如注释中所指出的,您可以使用在新线程中进行操作。缺点是您仍然需要某种方法来访问最终结果(最后返回什么)。下面的示例使用一个可选的回调函数来做一些事情(

  • 问题内容: 我在使用以下代码时遇到了麻烦: 调用Offer.query({},function(){}); 在我的控制器中工作没有任何问题。但是这部分不起作用: 这总是返回400错误: “NetworkError:400错误的请求- https://api.trustyou.com/hotels/d8421e79-99f0-41b2-8d6e-9cfd62a9776b/seal.json?call