【问题标题】:Error : : jQuery was not called错误: : jQuery 未被调用
【发布时间】:2012-12-24 16:44:28
【问题描述】:

这是我的 ajax 调用。

 $.ajax({
    type: "GET",
    url: "http://example.com/v1/search?keyword=r",
    dataType: "jsonp",
    crossDomain: true,
    success: function (responseString) {
        alert(responseString);
    },
    error: function (xhr, errorType, exception) {
        var errorMessage = exception || xhr.statusText;
        alert(errorMessage);
    }
});

来自我的示例网址的响应

    {
    "response": [{
        "attributes": {
            "type": "enge",
            "url": "/services/data/v24.0/sobjects/Challenge__c/a0GZ0000005Vvh4MAC"
        },
        "name": "Really",
        "end_date": "2013-02-07T15:26:00.000+0000",
        "total": 350.0,
        "registered_members": 0.0,
        "id": "30",
        "type": "Design",
        "id": "a0GZ0000005Vvh4MAC",
        "start_date": "2012-11-19T16:52:00.000+0000",
        "description": "This is my really cool challenge",
        "remaining_days": 28.0,
        "categories__r": [{
            "attributes": {
                "type": "Category__c",
                "url": "/services/data/Category__c/a08Z0000000RNI2IAO"
            },
            "id": "0RNI2IAO",
            "display_name": "Andy"
        }, {
            "attributes": {
                "type": "Category__c",
                "url": "/services/Category__c/a08Z0000000RNI3IAO"
            },
            "id": "a0O",
            "display_name": "ADR"
        }]
    }

    }],
    "count": 1
}

我正在尝试进行跨域调用并出现错误

jQuery180014405992737595236_1357861668479 was not called

更新

好吧,我尝试使用 dataType:"json" 但此时出现错误

No Transport

【问题讨论】:

  • 您的远程页面是否发出格式正确的 JSONP 响应? callback({ /* json */ })
  • 是的,响应是 JSON,而不是 JSONP。
  • @FelixKling 我尝试使用 dataType:json 但收到错误“无传输”

标签: javascript ajax jquery cross-domain


【解决方案1】:

这表明网络错误或不返回 JSONP 响应的端点。

(我猜我在测试时遇到的 DNS 查找失败是因为那不是您的真实 URL(请使用 example.com 例如 URL,这就是它的用途)如果不是,那么就是你的问题)。

【讨论】:

  • 这是端点没有提供正确的jsonp,如果是网络错误,他会得到相应的错误代码。
  • @jade — 这是 JSON 响应,而不是 JSONP 响应。您需要使用对回调参数中指定的函数的函数调用来包装它(并使用 application/javascript 内容类型而不是 application/json)
  • 重点其实是服务器必须回答 jQuery180014405992737595236_1357861668479({"theJson":"value}) 你的回答很粗鲁
【解决方案2】:

这是一个不正确的 JSONP 响应。服务器需要处理GET请求的callback=nameOfCallbackFunction参数,并将其作为函数包装器。

那么正确的响应应该是这样的:

nameOfCallbackFunction({"yourjson": "here"});

【讨论】:

  • 所以你的意思是这不是 jsonp 响应,而是 json 响应。我尝试使用 json dataType 但没有传输错误。我已经更新了问题
  • @jade 这是一个跨域调用(指向与您的页面来源不同的位置)?如果是,则只能使用 JSONP 或使用CORS 来防止出现SOP 错误。
  • 其实我不知道它是否是跨域的。我在不使用跨域“无传输”时遇到了一个错误,所以只是用谷歌搜索了一些建议使用跨域来解决问题
  • 好的,我刚刚使用了 $.support.cors = true;在 ajax 调用之前,但它给出错误访问被拒绝
  • 嗯,“无传输”或“拒绝访问”听起来像是典型的 SOP 违规行为。您是从本地计算机 (localhost) 和/或使用 Internet Explorer 进行测试吗?您需要使用 CORS 或 JSONP,没有其他选择。
【解决方案3】:

我知道这是一个旧线程,但一直在努力让跨域 ajax 示例正常工作。我阅读了很多关于使用 dataType: jsonp 和 support.cors = true 但得到 200 - 成功但出现解析错误的信息。

然后我在此线程中阅读了有关使用其中一个或另一个的信息。然后我将 dataType: 更改为 json 并留下 support.cors = true 并且它起作用了。最后 。 . .

这可能会帮助遇到相同问题的其他人。

【讨论】:

    【解决方案4】:

    出现JQueryXXXX错误是因为你调用的url有错误,需要引入“?callback=?”,所以看起来像:

    "http://example.com/v1/search?callback=?keyword=r"
    

    另外,如果你调用 .php,请记住:

    header('Content-Type: application/json; charset=utf8');
    

    【讨论】:

      猜你喜欢
      • 2013-01-19
      • 2013-01-15
      • 1970-01-01
      • 1970-01-01
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      相关资源
      最近更新 更多