我知道有很多AJAX问题,但在阅读完之后无法弄清楚如何做到这一点(我是JS的新手)
将$ form变量(或其他变量)传递给ajaxFormSubmitSuccess函数,以及ajax调用返回的“数据变量”(您可以通过.done(function(data){});
访问...不是真的确定它是什么类型的对象。)
我有(这不起作用):
//handles ajax form submissions
$("form[data-ccajax='true']").submit(ajaxFormSubmit);
var ajaxFormSubmit = function () {
var $form = $(this);
var options = {
url: $form.attr("action"),
type: $form.attr("method"),
context: this,
data: $form.serialize(),
dataType: "html"
};
//send ajax command
var promise = $.ajax(options);
promise.done(ajaxFormSubmitSuccess($form, promise));
promise.fail(ajaxFormSubmitFailure);
return false;
}
现在.done(ajaxFormSubmitSuccess($form, promise));
代码调用下面的函数。 data
变量未从promise
中提取...因此$data
在整个代码中保持为空。
var ajaxFormSubmitSuccess = function ($form, $promise) {
var $data;
$promise.success(function (data) { $data = data; });
alert("succeededajaxFormSubmit");
var target1 = $("#"+$form.attr('data-cctarget1'));
target1.html($data);
}
非常感谢任何有关如何做到这一点的帮助!
答案 0 :(得分:0)
$promise
内的 ajaxFormSubmitSuccess
不是ajax调用的结果,而是一个承诺。这是异步的,这就是为什么你的变量$data
在$promise.success()
之后仍然是空的。
尝试这种方式:
var ajaxFormSubmitSuccess = function ($form, $promise)
{
$promise.success(function (data)
{
alert("succeededajaxFormSubmit");
var target1 = $("#"+$form.attr('data-cctarget1'));
target1.html(data);
});
}