【发布时间】: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