2011-03-08 50 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