2

我已按照此处找到的教程来基本了解标题所说的内容。到目前为止,我得出的结论是$.getJSON简单地不起作用。

我已经将我的代码缩减为:

<script type="text/javascript">
        $(document).ready(function () {

            var usernameUnavailableRow = $('#usernameUnavailableRow');
            var availabilityMessage = $('#availabilityMessage');

            $("#UserName").hover(function () {
                //usernameUnavailableRow.hide();
            });

            $("#UserName").blur(function () {
            $.getJSON('/OCDB/UsernameAvailable.aspx?' + escape($(this).val()), function (results) {
                if (results.available) {
                    alert("available"); //Just checking if anything even returns
                } else {
                    alert("not available"); //Just checking if anything even returns
                }
            });
        });
        });
    </script>

<table>
         <tr>
            <td>
               <input id="UserName"></input>
            </td>
         </tr>
         <tr id="usernameUnavailableRow">
            <td>
               <span id="availabilityMessage">k</span>
            </td>
         </tr>
</table>

我的UsernameAvailable.aspx页面正好显示了这一点:
{ "available" : "false"}
使用时
<%@ Page Language="C#" CodeFile="UsernameAvailable.aspx.cs" Inherits="UsernameAvailable" ContentType="application/json" %>

然而,事件中什么也没有发生getJson

谁能告诉我哪里出错了,因为我看不到我的错误。

编辑
更改代码以删除 Javascript 产生的 404 错误(感谢@Archer),结果现在总是返回True。我检查了该页面是否False以使用的用户名返回,并且可以正常工作。

4

2 回答 2

0

results还是itemalert(item);(请再次检查您的代码)

此外,如果你得到一个有效json的,那么它将显示在alert,在警报中它只会显示一个object。所以要测试它,你需要写console.log(results);代替alert(item);

你可以写一件事来<input id="UserName"/>代替<input id="UserName"></input>

于 2013-02-06T12:47:33.503 回答
0

您在该链接上忽略了这一行:

UsernameAvailable.aspx 页面期望在查询字符串中提供所需的用户名,如下所示:UsernameAvailable.aspx? 所需的用户名

你需要这样做:

$.getJSON('UsernameAvailable.aspx?' + escape($(this).val()), function (results){
    if (results.available) {
        // available
    }
    else{
        // unavailable
    }
});
于 2013-02-06T12:48:29.277 回答