我需要将ajax get的结果放入javascript变量中。
以下作品
$.get('@Url.Action("_Edit", "News", null)/' + guid_News, function (html)
{
$("#divEdit").html(html);
});
这不起作用
var editHtml = "";
$.get('@Url.Action("_Edit", "News", null)/' + guid_News, function (html)
{
editHtml= html;
});
$("#divEdit").html(editHtml);
还试过
var editHtml = "";
editHtml = $.get('@Url.Action("_Edit", "News", null)/' + guid_News, function (html)
{
return html;
});
$("#divEdit").html(editHtml);
我怎样才能让它发挥作用?
答案 0 :(得分:2)
这不起作用的原因:
var editHtml = "";
$.get('@Url.Action("_Edit", "News", null)/' + guid_News, function (html)
{
editHtml= html;
});
$("#divEdit").html(editHtml);
...是因为这部分是function closure:
function (html)
{
editHtml= html;
}
它不会立即执行,也不会阻止执行后面的语句。它将在服务器返回对请求的响应时执行,但到那时,您的$("#divEdit").html(editHtml);
语句已经执行,editHtml
设置为空字符串。
这应该有效:
var editHtml = "";
$.get('@Url.Action("_Edit", "News", null)/' + guid_News, function (html) {
editHtml= html;
setDivHtml();
});
function setDivHtml() {
$("#divEdit").html(editHtml);
}
答案 1 :(得分:1)
我从未尝试在@Url.Action
调用中使用$.ajax
(所以我不是100%确定它有效),但您可以尝试使用它,因为它为您提供了更细粒度的方法ajax请求。在success
回调中,您可以
$.ajax({
url: '@Url.Action("_Edit", "News", null)/' + guid_News,
type: 'GET',
//async: false,
success: function(data) {
$('#divEdit').html(data);
}
});
$.ajax
选项甚至接受一个名为async
的参数,您可以根据@ aroth的答案中的评论将其设置为false。