我无法在显式调用警告框的情况下将表添加到div。
var content = "<table class='table1'>";
$.getJSON("/controller/Method", {
param1: val1
}, function (data) {
$.each(data, function (key, value) {
content += "<tr><td class='class1'>text1</td></tr>";
});
content += "</table>";
});
alert(content);
$('#div1').append(content);
如果我删除警告框,表格不会添加到div。
我不明白为什么只会在警报框等页面闪烁上添加表格。
古怪!!
答案 0 :(得分:0)
在AJAX调用之后,您正在将table
附加到div
,而不考虑此异步操作的时间,您实际上并没有等待任何结果从服务器返回只是提高了。
另一方面,当你拨打alert
功能时,幸运的是只有(!),你正在生效&#34;等待&#34;从服务器到达的结果(可能是毫秒)。
或者,仅将表附加到success
回调:
var content = "<table class='table1'>";
$.getJSON("/controller/Method",
{
param1: val1
}
, function (data) {
$.each(data, function (key, value) {
content += "<tr><td class='class1'>text1</td></tr>";
});
$('#div1').append(content);
$('#div1').append("</table>");
});
答案 1 :(得分:0)
$.getJSON
是一个异步调用,因此javascript解释器不会等到它完成后再转到它之后的代码。警报有效地延迟了解释器,允许异步调用及时完成追加。你应该做的是将追加代码放在成功回调中:
var content = "<table class='table1'>";
$.getJSON("/controller/Method",
{
param1: val1
}
, function (data) {
$.each(data, function (key, value) {
content += "<tr><td class='class1'>text1</td></tr>";
});
content += "</table>";
$('#div1').append(content);
});
答案 2 :(得分:0)
请注意getJSON发送异步请求,这意味着它不会等待请求的响应。 Yuo应该试试这个:
$.ajax({
type: "GET",
url: "/controller/Method",
contentType: "application/json",
dataType: "json",
data: {},
async:false,
success: function (data) {
$.each(data, function (key, value) {
content += "<tr><td class='class1'>text1</td></tr>";
});
content += "</table>";
},
error: function (err) {
alert("Error");
}
});
$('#div1').append(content);
&#34; asyns:false&#34;将通过使ajax请求同步来解决您的问题。