我正在尝试创建一个可重用的函数,该函数将允许我调用AJAX请求,并使用传入的参数之一作为AJAX调用的数据部分中的参数。
// Returns AJAX data for updating other fields based on a dropdown changing
App.prototype.OnDropdownChange = function (s, e, newId, ajaxParameter, ajaxRequestURL) {
// Create an AJAX request based on the parameters
$.ajax({
url: ajaxRequestURL,
data: JSON.stringify({ ajaxParameter: newId }),
type: 'POST',
success: function (data) {
// Return the data
return data;
},
error: function (data) {
// Error
return data;
}
});
}
理想情况下,“ ajaxParameter”将保留要传递的参数的名称。因此,例如,“ ajaxParamter”包含“ theNewID”,这是我的MVC控制器期望的参数,但是当传递给它时,它将显示为“ ajaxParameter”,而不是内部值。
我该如何工作?
编辑
看到这里它如何显示为ajaxParameter吗?我想要的是成为我所传递的一切。
您可以执行所需的操作,只需要使用方括号符号定义键来构建对象。
但是,更大的问题是您return
在success
和error
处理程序中的使用。由于AJAX请求是异步的,因此您无法从中返回任何内容。相反,您需要提供在这些事件下执行的回调函数。试试这个:
App.prototype.OnDropdownChange = function (s, e, newId, ajaxParameter, ajaxRequestURL, sCallback, eCallback) {
var data = {};
data[ajaxParameter] = newId;
$.ajax({
url: ajaxRequestURL,
data: data, // note no need to stringify the object
type: 'POST',
success: function (data) {
sCallback && sCallback(data);
},
error: function (x, s, e) {
eCallback && eCallback(x, s, e);
}
});
}
然后,您可以这样称呼:
x.OnDropdownChange(s, e, contactID, "CustomerContactId", "/Project/Project/GetCustomerContactDetails/", function(data) {
// success:
console.log(data);
}, function(x, s, e) {
// error:
console.log(x, s, e);
});
从这段代码中可以看到,它仍然很冗长,现在基本上只是包装,$.ajax
几乎没有好处。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句