是否可以在 AJAX 调用中使用条件来避免重复代码?
Is it possible to use conditions within an AJAX call to avoid duplicate code?
例如,我目前正在实现客户端 javascript,如果附加参数超过 IE 对 GET HTTP 请求的 2048ish 字符的安全限制,它将使用 POST,而是附加参数到 JSON 格式的正文。我的代码类似于以下内容:
var URL = RESOURCE + "?param1=" + param1 + "¶m2=" + param2 + "¶m3=" + param3();
if(URL.length>=2048) {
// Use POST method to avoid IE GET character limit
URL = RESOURCE;
var dataToSend = {"param3":param3, "param1":param1, "param2":param2};
var jsonDataToSend = JSON.stringify(dataToSend);
$.ajax({
type: "POST",
data: jsonDataToSend,
dataType: 'json',
url: URL,
async: true,
error: function() {
alert("POST error");
},
success: function(data) {
alert("POST success");
}
});
}else{
// Use GET
$.ajax({
type: "GET",
dataType: 'json',
url: URL,
async: true,
error: function() {
alert("GET error");
},
success: function(data) {
alert("GET success");
}
});
}
有什么方法可以避免将 ajax 写两次?像
if(URL.length>=2048) {
// Use POST instead of get, attach data as JSON to body, don't attach the query parameters to the URL
}
N.b。我知道使用 POST 而不是 GET 来检索数据违反了 REST 的某些原则,但是由于 IE 的限制,这是我能够找到的最好的解决方法。处理这种情况的替代建议也很受欢迎。
jQuery 的$.ajax
方法获取具有属性的对象。因此,首先生成该对象和一个 "standard setting" 并根据特定逻辑修改它们并最终通过 ajax 调用将其传递给一个位置非常容易。
原理:
var myAjaxSettings = {
type: "POST",
data: jsonDataToSend,
dataType: 'json',
url: URL,
async: true,
error: function() {
alert("POST error");
},
success: function(data) {
alert("POST success");
}
}
if ( <condition a> )
myAjaxSettings.type = "GET";
if ( <condition b> )
myAjaxSettings.success = function (data) { ...make something different ... };
$.ajax(myAjaxSettings);
例如,我目前正在实现客户端 javascript,如果附加参数超过 IE 对 GET HTTP 请求的 2048ish 字符的安全限制,它将使用 POST,而是附加参数到 JSON 格式的正文。我的代码类似于以下内容:
var URL = RESOURCE + "?param1=" + param1 + "¶m2=" + param2 + "¶m3=" + param3();
if(URL.length>=2048) {
// Use POST method to avoid IE GET character limit
URL = RESOURCE;
var dataToSend = {"param3":param3, "param1":param1, "param2":param2};
var jsonDataToSend = JSON.stringify(dataToSend);
$.ajax({
type: "POST",
data: jsonDataToSend,
dataType: 'json',
url: URL,
async: true,
error: function() {
alert("POST error");
},
success: function(data) {
alert("POST success");
}
});
}else{
// Use GET
$.ajax({
type: "GET",
dataType: 'json',
url: URL,
async: true,
error: function() {
alert("GET error");
},
success: function(data) {
alert("GET success");
}
});
}
有什么方法可以避免将 ajax 写两次?像
if(URL.length>=2048) {
// Use POST instead of get, attach data as JSON to body, don't attach the query parameters to the URL
}
N.b。我知道使用 POST 而不是 GET 来检索数据违反了 REST 的某些原则,但是由于 IE 的限制,这是我能够找到的最好的解决方法。处理这种情况的替代建议也很受欢迎。
jQuery 的$.ajax
方法获取具有属性的对象。因此,首先生成该对象和一个 "standard setting" 并根据特定逻辑修改它们并最终通过 ajax 调用将其传递给一个位置非常容易。
原理:
var myAjaxSettings = {
type: "POST",
data: jsonDataToSend,
dataType: 'json',
url: URL,
async: true,
error: function() {
alert("POST error");
},
success: function(data) {
alert("POST success");
}
}
if ( <condition a> )
myAjaxSettings.type = "GET";
if ( <condition b> )
myAjaxSettings.success = function (data) { ...make something different ... };
$.ajax(myAjaxSettings);