使用Json对象填充视图页面

时间:2011-03-08 15:53:02

标签: jquery asp.net-mvc

我的site.master中有以下脚本,应根据从同一页面的下拉列表中选择的项目来弹出我的文本框。

$(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代码;

public JsonResult DropDownChange(string 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;
        }
    }

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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。