【问题标题】:AJAX - How to retrieve the returned value from my static [webmethod]AJAX - 如何从我的静态 [webmethod] 中检索返回的值
【发布时间】:2012-10-16 12:09:16
【问题描述】:

我的 Default.aspx 页面中有以下 PageMethod:

[WebMethod]
public static string Hello()
{
    return "Hello";
}

这里有一个 div 文本,我想将其设置为通过 AJAX 返回的任何内容:

<div id="ajaxDiv"></div>

下面是我调用 AJAX 的两种方式。第一个是标准的 AJAX 调用:

 function testAjax()
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function ()
{
    if (xmlhttp.readyState == 4 && status == 200)
        $('#ajaxDiv').text(xmlhttp.responseText);
}
xmlhttp.open("POST", "Default.aspx/Hello", true);
xmlhttp.send();

}

第二个是借助JQuery:

function testAjaxJQuery()
 {
  $.ajax(
  {
     type: "POST",
     url:"Default.aspx/Hello",
     data: "{}",
     success: function (data)
     {
         $('#ajaxDiv').text(data); 
     }
  }
 )

}

我将一个按钮 onclick 事件绑定到这些函数,但是通过这两种方法,我得到了我的 Default.aspx 页面的标记,而不是单词“Hello”。我还需要做什么。

【问题讨论】:

  • 如果添加 有帮助吗? “返回错误;”防止回发。另外,当你这样做时会发生什么: $('#ajaxDiv').text('Hello');尝试对 ajax (xmlhttp.responseText) 返回的数据进行警报或 Console.log
  • 如果我写 $('#ajaxDiv').text('Hello');我在我的 div 中得到“你好”。似乎 xmlhttp.responseText 包含我的 Web 方法所在页面的所有 HTML。就像 AJAX 从不调用方法,而是获取网页 HTML
  • 那么在 JQuery 语法中会发生什么?如果您在 jQuery 调用的“成功”部分尝试 alert 或 Console.log,会返回什么?是否也会返回完整的 HTML?
  • 检查这个答案。我认为您需要使用 eval() 来取消“Hello”周围的引号。 stackoverflow.com/questions/2998455/…
  • 是的,它也会在成功部分返回 HTML

标签: jquery asp.net ajax


【解决方案1】:

您应该使用 data.d 来获取响应:

 $.ajax({
   type: "POST",
   url: "Default.aspx/Hello",
   data: "{}",
   contentType: "application/json; charset=utf-8",
   dataType: "json",
   success: function (data) {
         $("#ajaxDiv").text(data.d);
   }
});

【讨论】:

  • 这样我什么也得不到。我的意思是我的 div 文本变空了
  • 谢谢伙计,这完成了工作。我得到了“你好”。 :) 当然,这只是测试 AJAX 是否有效。我需要 AJAX 来查询数据库。这种情况我该怎么办?
  • @MikeJM 您可以在使用 Fileds 进入 WebMethode 时生成 HTML。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多