2015-12-30 35 views
-1

我使用ASP的MVC和建立在我的控制器功能:jQuery的AJAX不是ASP MVC工作

public bool UsernameCheck(string name) 
     { 
      return true; 
     } 

然後我就HTML頁面上創建一個jQuery AJAX功能:

<script type="text/javascript"> 
    $("#usernamebox").change(function (e) { 
     $userval = $(this).val(); 
     $.ajax({ 
      url: "usernamecheck", 
      data: { name : $userval }, 
      cache: false, 
      type: "POST", 
      dataType: "string", 
      success: function (result) { 
       console.log(result); 
       if (result) { 
        $("#usernameava").text("Available"); // HTML DOM replace 
       }else { 
        $("#usernameava").text("Not available"); // HTML DOM replace 
       } 
      }, 
      error:function() { 
       console.log("e"); 
      } 
     }); 
    }); 
</script> 

但當我在文本框中輸入文本時,它返回狀態代碼:200行並返回數據是

但我不明白,爲什麼我的成功功能沒有執行。它總是執行錯誤功能。

請幫幫我。我找不到我做錯了什麼。

+0

你有沒有嘗試給你的錯誤和成功函數放置一個斷點,看看會發生什麼? –

回答

1

您的操作方法正在返回一個布爾值。但在您的ajax調用中,您提到了您期望從服務器獲得的datatypestring,它不是dataType屬性的有效選項。

您應該刪除

dataType: "string" 

如果爲這個屬性的值,jQuery將嘗試基於MIME類型來從服務器返回的響應來推斷它。

或者您可以指定text作爲有效選項的值。

dataType: "text" 

而且,你的方法參數的名字是name,所以在你的JavaScript代碼

data: { name : $userval }, 

也發生相應的變化,它是使用Url.Action輔助方法來生成相對URL到一個好主意行動方法。如果您的腳本處於剃刀視圖,則可以使用此方法

url: "@Url.Action("usernamecheck","YourControllerNameHere")", 
+0

我只是改變了名字,但仍然發生同樣的事情。我得到了狀態碼:200 OK並且返回數據爲真。但仍然錯誤函數執行 –

+0

我只是改變了你說的這兩件事情。但仍面臨同樣的問題。我得到了狀態碼:200 OK並且返回數據爲真。但仍執行錯誤函數 –

+0

你刪除dataType:「字符串」? – Shyju

1

問題出在您的dataType設置中。它期望一個未知的數據類型,它會自動默認爲錯誤。

試試這個:dataType: "text",

編輯

可用的數據類型有:texthtmlxmljsonjsonpscript