将ajax $ get()放入javascript变量中
我需要将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);
我怎样才能让它发挥作用?
我从来没有尝试在$.ajax
调用中使用@Url.Action
(所以我不是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。
这不起作用的原因:
var editHtml = ""; $.get('@Url.Action("_Edit", "News", null)/' + guid_News, function (html) { editHtml= html; }); $("#divEdit").html(editHtml);
…是因为这部分是一个函数闭包 :
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); }
- 从控制器返回Json,从未成功
- ASP.NET MVC3 – 自定义validation属性 – >客户端损坏
- MVC 3 Razor – Ajax.BeginForm OnSuccess
- 有没有人用过ASP.NET MVC3的jquery flexigrid?
- jQuery datepicker的dateFormat – 如何与.NET当前文化DateTimeFormat集成
- 如何使用Ajax来使用ASP.Net MVC控制器操作来返回表单中两个日期之间的差异?
- asp.net MVC3和jquery AJAX教程
- MVC 3 AJAX和
- 如何通过Jquery调用MVC FileContentResult并让它提示用户保存它的返回值?