这个jQuery AJAX回调有什么问题?

时间:2011-11-18 07:18:49

标签: jquery html ajax json jquery-mobile

我正在创建移动webapp的前端,但我还不想使用后端语言。

  • 会很安宁
  • 我在嘲笑JSON。当我想检查人是否有效时,我会使用“check / 123”
  • 这样的地址
  • 我在我的文件系统中创建了文件夹,模拟了模拟JSON响应的restful链接和文件。所以我有一个名为“check”的目录和内部文件“123”,内容如下:

    {“exists”:“yes”}

现在,这是我的整个页面,因此您可以重现问题,即始终提示错误:

<!DOCTYPE html>
<html>
<head>
    <!-- meta info -->
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta name="viewport" content="width=device-width, minimum-scale=1, maximum-scale=1">
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black" /> 
    <!-- .js files -->
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script> 
    <script type="text/javascript" src="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.js"></script> 
</head>

<body>
    <div data-role="content"> 
        <form id="form_check_person">
            <div data-role="fieldcontain">
                <input type="text" id="person_id" name="person_id" value="" />
            </div>
            <div data-role="fieldcontain">
                <input type="submit" value="Check me" />
            </div>
        </form>
        <script type="text/javascript">
            $("#form_check_person").submit(function() { 
                $.ajax({ 
                    url: "check/" + $("person_id"),
                    type: "GET",
                    dataType: "json",

                    success: function() {
                        alert('success');
                    },

                    error: function() {
                        alert('error');
                    }
                });
            });
        </script> 
    </div>
</body>
</html>

修改

我已将.val()添加到#{'#person_id'}并仍然收到错误:/

4 个答案:

答案 0 :(得分:7)

我不确定您对$("person_id")做了什么。试试这个:

$("#person_id").val();

答案 1 :(得分:1)

由于请求本身中的错误(例如,未找到客户端404页面或服务器端503服务不可用),始终会调用错误函数。

我怀疑是一个狡猾的网址。

尝试在Ajax调用之外构建URL变量(var theLink = "check/" + $("#person_id").val())。在调试器或console.log中检查它以确认它。检查URL是否确实可用。然后在您的Ajax调用中将“theLink”传递给url参数。

仍然无法使用?一些后续问题:

#person_id是否有值属性,或者是必须使用.html()或.text()而不是.val()来获取“值”的元素?

一般来说,“person_id”这个名字听起来像是一个可以重复使用的元素。 IE浏览器。没有看到你的应用程序的其余部分,我可以想象有多个人。既然如此,您确定正确使用了ID吗?它应该是一个类吗?一般来说,您是否选择了预期的元素?

目录是“检查”当前页面的一层深度,还是需要从根目录发起?

此外,JSON是否以适当的编码发送?响应是什么样的?

JavaScript控制台报告了什么?如果没有错误,GET的“响应”是什么样的?是否有可用的JSON选项卡(这将确认它已被接受为JSON)。

有许多变数岌岌可危......一个现实的例子会很精彩。 ; - )

答案 2 :(得分:0)

而不是:

url: "check/" + $("person_id")

...试试:

  url: "check/" + $("#person_id").val()

...来代替。

答案 3 :(得分:0)

你的id forgot #调用元素有问题,它应该是

url: "check/" + $("#person_id").val()