ajax GET 方法中未调用成功函数

Success function is not getting invoked in ajax GET method

在这段代码中,我在 success 函数中遇到了问题。我尝试了很多,但它会转到 error 函数。 #action-button 调用 JavaScript 方法。

<button id="action-button">Click me to load info!</button>
<div id="info"></div>
<small>
    Demo created by <a href="https://twitter.com">Twitter</a>
</small>
$('#action-button').click(function() {
    $.ajax({
        url: 'sampleurl',
        data: { format: 'json' },
        error: function() {
            $('#info').html('<p>An error has occurred</p>');
        },
        dataType: 'jsonp',
        success: function(data) {
            $('#info').html('<p>Successd</p>');
        },
        type: 'GET'
    });
});

如果您要向服务器发送 json,请尝试添加 conetentType:application/json

您还希望响应是 jsonp 内容类型吗?这方面的不匹配也可能是问题所在。

如果在 ajax 调用期间发生任何问题,例如 url 错误或服务器错误,success 函数将不会被触发。如果一切正常,HTTP 状态将为 200 OK,因此将触发成功事件。此外,您的选项中有 dataType: 'jsonp' 与 post 数据不匹配。这可能是一个可能的问题。您可以检查 Firebug 和 post 中的错误以获得更好的帮助。

正如我在上面的评论中提到的,AJAX 查询因 XSS protection.

而被阻止

运行 您在 IE 中提供的 jsFiddle(并在 error() 回调中放置断点)给出了错误:

Access is denied

而 运行 它在 Firefox 中给出了以下错误:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://0daf70fe0a6244fe... This can be fixed by moving the resource to the same domain or enabling CORS.

您必须在 http://sampleURL 的 API 调用中添加适当的 Access-Control-Allow-Origin header。