Ajax简单的例子不起作用

时间:2013-04-08 19:58:24

标签: javascript jquery ajax

我有一段时间没用过ajax,现在我甚至无法让这个简单的程序工作,我做错了吗?

        <script type = "text/javascript" src = "jquery-1.9.1.min.js"></script>
    <script type = "text/javascript">
        alert("");
        var count = 0;
        $.ajax({
               url: 'get.php',
               dataType: 'json',
               success: function () 
               {       
                alert("");
               } 
        });
        alert("");
    </script>

<?php
echo "yay";
?>

由于

3 个答案:

答案 0 :(得分:4)

dataType设置为“json”表示来自get.php的响应被解析为JSON。如果它无效JSON或响应为空,则请求将失败。

如果URL不正确(无法找到... HTTP 404错误),则请求将失败。

请求的默认type是“GET”,因此如果get.php不允许“GET”(由于某种原因),它将返回HTTP错误,并且请求将失败。

如果服务器上出现错误,则可能会返回HTTP 500错误,请求将失败。

帮助调试的一点是将error选项添加到$.ajax调用,看看是否调用了它。相反,我使用.fail()方法......它做同样的事情。

当然,更直接的调试方法是打开浏览器的控制台并查看AJAX请求。它应该显示有关它的多个细节,可以帮助您确定任何问题。

似乎AJAX请求从未被执行/发送,因为您在中间看不到alert。好吧,仅仅因为请求不成功,并不意味着它被跳过了。有很多原因(我在上面提到了几个)为什么请求可能会失败。 .fail()方法将帮助您确定原因。

此外,在jQuery中处理延迟对象的通用约定是使用donefail方法,因此这是一个选项。当然,$.ajax具有您可以指定的特定选项(successerrorcomplete - 这是其他内容),因此这也是一个选项。您还可以使用属于从.success()返回的对象的一部分的特殊方法(.error().complete()$.ajax),但从版本1.8开始不推荐使用这些方法 - 查看底部的.ajax文档 - http://api.jquery.com/jQuery.ajax/。但这是我如何设置它,它应该与你的不同,但确实会发现错误:

$.ajax({
    url: 'get.php',
    dataType: 'json'
}).done(data) {
    console.log("successful response");
}).fail(jqXHR, textStatus, errorThrown) {
    console.log("error: " + textStatus + ", " + errorThrown);
});

答案 1 :(得分:0)

你确定在你的ajax调用被命中时jQuery已经加载了吗?

尝试将其包装在doc中,以确保您实际已加载

$(document).ready(function () {
    alert("");
    var count = 0;
    $.ajax({
        url: 'get.php',
        dataType: 'json',
        }).alwaysfunction () {
           alert("call was hit");
        });
    });

});

答案 2 :(得分:0)

如果get.php出现问题,你的代码不会指出任何问题,jquery.ajax()只是吞下错误。

甚至在将.failure回调例程添加到ajax调用之前,您应该能够检查执行get.php的Web服务器上的错误日志,将记录与执行get.php相关的任何错误。