在ajax GET方法中不会调用成功函数

时间:2015-03-16 09:45:34

标签: javascript jquery ajax asp.net-ajax

在此代码中,我遇到了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'
    });
});

3 个答案:

答案 0 :(得分:2)

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

您还期望响应是jsonp内容类型吗?这种不匹配也可能是个问题。

答案 1 :(得分:1)

正如我在上面的评论中提到的,由于XSS protection,AJAX查询被阻止。

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

  

访问被拒绝

在Firefox中运行会出现以下错误:

  

阻止跨源请求:同源策略禁止在http://0daf70fe0a6244fe读取远程资源...这可以通过将资源移动到同一域或启用CORS来解决。

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

答案 2 :(得分:0)

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