我正在使用文本JqTE插件进行富文本编辑。但是,在使用ajax调用填充大数据的文本区域时,我遇到了问题。这似乎与异步调用有关。
function filldata(CusID)
{
var returningData;
var data = { CustomerId: CusID }
data = JSON.stringify(data);
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Services.svc/GetConditions",
data: data,
dataType: "json",
success: function (result) {
var TermsCondition = $($.parseXML(result.GetConditions)).find("Table").find("CommunicationTermsAndConditions").html();
/*TermsCondition will be something like 3000chars.*/
$("#hdnTerms").val(TermsCondition);
return true;
});
}
var IsAjaxsucces = filldata(CusID);
if(IsAjaxsucces){
--Code that depends on $("#hdnTerms")
}
我在一段时间后点击按钮事件后调用此方法。但每次我发现我的隐藏字段是#hdnTerms是空的。当我在调试器中尝试时,条件条件正在填充我期望的正确数据。
在ajax成功完成之前,我不想执行其他代码,因此TermsCondition值不会为空。
答案 0 :(得分:0)
您没有从filldata()
返回值,然后您会惊讶filldata()
没有返回值。
首先,您应该返回从$ajax()
获得的值。
其次,该值将不成为您的成功函数的返回值。 Ajax返回一个“Promise”,这个结构有一天会给你所需的值。
像这样:
function filldata(CusID)
{
...
return $.ajax({
...
});
}
filldata(CusID).then(function(isAjaxSuccess){
// Code that depends on $("#hdnTerms")
});
阅读Promises here。
答案 1 :(得分:0)
function filldata(CusID)
{
var returningData;
var data = { CustomerId: CusID }
data = JSON.stringify(data);
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Services.svc/GetConditions",
data: data
dataType: "json"}).done(function(result){
var TermsCondition = $($.parseXML(result.GetConditions)).find("Table").find("CommunicationTermsAndConditions").html();
/*TermsCondition will be something like 3000chars.*/
$("#hdnTerms").val(TermsCondition);
//You have to validate here
--Code that depends on $("#hdnTerms")
return true;
});
}
如果这对您没用,则应使用 async:false