2011-03-08 73 views
0

填充視圖頁面我在我的Site.Master應基於在同一個頁面從下拉菜單中選擇的項目進行popultating我的文本框下面的腳本。使用JSON對象

$(function() { 
    $("#vendorID").change(function() { 
     var selectedItem = $(this).val(); 
     if(selectedItem != "New Vendor Id") 
     {     
      $.getJSON(
       "<%=Url.Action("DropDownChange") %>/?dropdownValue=" + selectedItem, 
       function(data) { 
        //$("#Data").html(data); 
        $("#name").val(data.Name); 
       } 
      ); 
      $(document).ready(function() {     
       $("#zip").val(''); 
      }); 

,我沒有得到任何錯誤,我沒有得到填充文本框......這可能是我的可能出現的錯誤????

ASP.NET代碼;

公共JsonResult DropDownChange(串dropdownValue) //此操作方法被通過Ajax請求
{ // dropdownValue = 「FR28406」 調用;

 if (dropdownValue != null && Request.IsAjaxRequest() == true) 
     { 

      paymentApplicationRefund = 
      cPaymentRepository.PayableEntity(dropdownValue); 

      paymentApplicationRefund.Address1.Trim(); 
      paymentApplicationRefund.Address2.Trim(); 
      paymentApplicationRefund.Name.Trim(); 
      paymentApplicationRefund.City.Trim(); 
      paymentApplicationRefund.Contact.Trim(); 
      paymentApplicationRefund.State.Trim(); 
      paymentApplicationRefund.Zip.Trim(); 



      return Json(paymentApplicationRefund,"application/json");    
     } 

     else 
     { 
      return null; 
     } 
    } 

回答

3

你有太多document.ready那裏。一個就足夠了。此外,我建議你URL編碼的參數:

$(function() { 
    $('#vendorID').change(function() { 
     var selectedItem = $(this).val(); 
     if(selectedItem != 'New Vendor Id') { 
      $.getJSON('<%= Url.Action("DropDownChange") %>', { dropdownValue: selectedItem }, function(data) { 
       $('#name').val(data.Name); 
      }); 
      $('#zip').val(''); 
     } 
    }); 
}); 

也因爲$ .getJSON是發送一個GET請求,你必須確保你的控制器動作授予它:

public ActionResult DropDownChange(string dropdownValue) 
{ 
    return Json(new { Name = "foo bar" }, JsonRequestBehavior.AllowGet); 
} 
0

有一對夫婦的事情,正在採取你的方法,可能會導致你的問題。很難說具體發生了什麼,但這裏有一些可能性:

「if(selectedItem!=」New Vendor Id「)」應該引用一個值,而不是字符串文字。

你創建你的下拉項總是有它的原話爲你的代碼工作的依賴。如果這不匹配,那可以解釋爲什麼它不起作用。

<option value="">New Vendor ID</option> 

... 

if(selectedItem) { 
//... 
} 

檢查數據返回給你的成功的功能。它是否包含「d」參數?

如果是:http://encosia.com/2009/06/29/never-worry-about-asp-net-ajaxs-d-again/

檢查你的MVC處理函數,並驗證碼實際上是被擊中。

使用體面的調試工具(Chrome,FF + FireBug)獲取瀏覽器,並在「網絡/網絡」選項卡上觀看數據包。你是否回到404或500錯誤?這會暗示您的.NET代碼存在問題,而不是您的JS代碼。

+0

我沒有得到一個錯誤 - 500內部服務器錯誤。我打算髮布我的ASP.NET代碼。 – JamaicasFinest 2011-03-08 18:13:41

+0

那麼我的ASP.NET代碼出錯了? – JamaicasFinest 2011-03-08 18:19:09

+0

如果我不得不猜測,那是你的其中一個屬性爲null,當你調用「.Trim()」時會拋出一個錯誤。真的,你不需要修剪那麼多,這些錯誤可以通過調試很容易地發現。 – 2011-04-06 15:31:19