2014-11-05 43 views
0

我正在使用Jquery 1.11.1。我的代碼如下,我收到「未定義」響應ajax調用。任何人都可以請幫我找到解決方案嗎?接收未定義的Ajax成功/完整功能

$(document).ready(function() { 
    $("#txtSearch").keyup(function (e) { 
     e.preventDefault(); 
     var x = $("#txtSearch").val(); 
     // alert(x); 
     $.ajax({ 

      type: "POST", 
      url: '@Url.Action("Search","OfficeLocation")', 
      dataType: "application/json; charset=utf-8", 
      data: JSON.stringify({"Location":x}), 
      // dataType: "json", 

      complete: function (data) { 

       var table = "<table class='table'>"; 
       $.each(data, function (index, value) { 
        table += "<tr><td>" + value.Name + "</td></tr>"; 
       }); 
       table += "</table>"; 
       alert(table); 
       $("#myData").html(table); 
      } 
     }); 
    }); 
}); 

和相關的控制器:

public ActionResult Search(string Location) 
    { 
     var LocationViewModel = new List<OfficeAssignment>(); 
     LocationViewModel = db.OfficeAssignments.Where(x => x.Name.StartsWith(Location)).ToList(); 
     return Json(LocationViewModel,JsonRequestBehavior.AllowGet); 

    } 

當我使用的成功,而不是完整的,它不打成功的功能!

回答

0

那是因爲完成後成功和錯誤回調。我認爲你遇到了一個錯誤,所以試着抓住它並看看它收到了什麼。

url'@ Url.Action(「Search」,「OfficeLocation」)'如何在javascript中計算?這對我來說似乎不是一個有效的網址。

+0

看來這個URL工作並將值發送給控制器,但是不會將json結果返回到完整/成功函數。我看到LocationViewModel包含正確數量的值!那麼,還有什麼可能導致這個問題?! – user3912257 2014-11-10 18:35:16

+0

嘗試添加一個'錯誤'處理程序並從那裏進行調試。或者添加一個try-catch serverside。可能是服務器錯誤發生。如果服務器返回一些東西,總會有一個響應。另一件事是檢查POST請求到服務器,並查看它在瀏覽器的開發人員工具中返回的內容。 – 2014-11-10 19:01:53

+0

我得到了[object] [object]。我試着去讀取這個值的屬性名稱,但仍然顯示類似的對象。 – user3912257 2014-11-16 16:40:18