2013-02-06 12 views
2

我已经按照发现Here的教程来了解标题所说的内容。到目前为止,我已经得出结论,$.getJSON根本不起作用。我如何使用JQuery 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事件发生在。

任何人都可以请告诉我我哪里出错了,因为我无法看到我的错误。

EDIT
一旦改变该代码,以除去404错误的产生的Javascript(感谢@Archer),其结果现在总是返回True。我已经检查过,看到网页正在返回False上的用户名,它的工作原理。

+0

什么是UsernameAvailable.aspx的内容类型?它是一个正常的asp.net页面还是返回一个JSON对象? –

+0

更新我的问题 – TheGeekZn

+1

您是否在浏览器中看到控制台中的任何内容?如果通话正在进行,那么您应该能够查看是否成功,以及返回的内容。 – Archer

回答

0

<input id="UserName"/>你忽略了该链接,此行来写console.log(results);

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

你需要这样做:

$.getJSON('UsernameAvailable.aspx?' + escape($(this).val()), function (results){ 
    if (results.available) { 
     // available 
    } 
    else{ 
     // unavailable 
    } 
}); 
+0

为了简单起见,我在代码中删除了它。虽然它在那之前,我删除它,因为我认为它不需要**这个测试。将添加并检查。编辑:仍然没有工作。 – TheGeekZn

+0

请参阅编辑,阅读该链接的第3步。 – Coder

+0

根据@Archers的说法,并将这些代码添加到混合中,我得到了结果,但不幸的是,结果总是“真”,即使名称已被采用。当我将用户名变量传递给url时,页面以false作为响应,这样就可以工作。 – TheGeekZn

0

它是resultsalert(item);item(请检查一次你的代码)

另外,如果你在警报有效json那么它会显示在alert, 这将只显示一个object。 因此,为了测试它,你需要到位的alert(item);

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

+0

对不起,其结果。我把它改成了一个普通的''test''字符串,但仍然是失败的。 – TheGeekZn

+0

你可以使用'$ .ajax'来检查它是否正常工作。例如''。ajax({dataType:“json”,url:url,data:data,success:success});'参考http://api.jquery.com/jQuery.getJSON/ –