我的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;
}
}
答案 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。