我想对MVC控制器进行2个不同的调用。第一个返回一系列数据,第二个返回一个局部视图。在萤火虫中,我看到结果和状态都是“成功”。为什么当我传入不同的对象时,AJAX会将相同的数据返回给回调函数?
我想通过回调来处理结果到一个常见的AJAX方法。首先是dataType'Json',其次是dataType'HTML'。同样,如果我单独触发它们但它们似乎在第二次调用时互相覆盖,它们都可以工作。
这里是我的全局参数,对象:。
var ajaxOptions = {
data: '',
params: {},
callback: "ajaxafter",
url: "",
ishtml: false,
tag: 0,
success: false
};
...
// get ajax options
me.getAjaxOptions = function() {
return ajaxOptions;
}
p.AJAX = (function ($, me) {
'use strict';
var child = {};
function returnAJAXDefault(o) {
var dataType = (o.ishtml) ? "html" : "json";
$.ajax({
url: o.url,
data: JSON.stringify(o.params),
type: 'POST',
dataType: dataType,
contentType: 'application/json; charset=utf-8'
}).done(function (data) {
o.data = data;
o.success = true;
console.dir(o)
if (o.callback !== null && me[o.callback]) {
me[o.callback](o);
return;
}
}).fail(function (jqXhR) {
o.data = jqXhR;
if (o.callback !== null && me[o.callback]) {
me[o.callback](o);
return;
}
});
}
// get ajax
child.getAJAX = function (options) {
returnAJAXDefault(options);
}
return child;
}(jQuery, obj));
这是我的Ajax调用
在我尝试页面,这样做
$(document).ready(function() {
p = (function ($, me) {
me.ajaxafter = function (data) {
console.log(1)
if (data.tag == 1) {
$('body').html(data.data)
}
if (data.tag == 0) {
console.dir(data.data);
}
}
me.ajaxafter1 = function (data) {
console.log(2)
if (data.tag == 1) {
$('body').html(data.data)
}
if (data.tag == 0) {
console.dir(data.data);
}
}
function test1() {
var axopts = me.getAjaxOptions();
axopts.params = {
varinput: 'tst'
};
axopts.url = "/Common/ReturnProjectList";
axopts.callback = "ajaxafter";
me.AJAX.getAJAX(axopts);
}
function test2() {
var axopts1 = me.getAjaxOptions();
axopts1.url = "/Common/ReturnPartial";
axopts1.ishtml = true;
axopts1.tag = 1;
axopts1.callback = "ajaxafter1";
me.AJAX.getAJAX(axopts1);
}
test1();
test2();
}(jQuery, obj));
});
从萤火结果附
请让我知道,如果我的问题可以更好措辞。继续大拇指朝下。另外,如果我的代码可以改进,我很想知道,但是,真的在寻找为什么退货不是独立的。
在此先感谢。
这帮了一吨!谢谢你的详细回复。我会采取你的建议和实施! – Killilea