var req = $.ajax({
type: 'GET',
cache: false,
url: 'loc.aspx?count=' + str,
dataType: 'json',
contentType: "application/json; charset=utf-8",
async: false,
data:'{}',
success: function (data) {
alert(data.responseText);
}
});
req.fail(function (data) {
TINY.box.show({ html: 'Server Error. Try again: ' + data.responseText, animate: false, close: false, boxid: 'error', top: 100 });
});
以上代码用于在jsp中正常工作,现在我正在尝试在asp.net c#中使用,无论如何我在错误块中获取正确的数据,我希望它在成功块中。即使data.d
没有帮助,
如果我写了类似alert(data)
的内容,我会得到完整的html,我只需要响应文本,当我像这样使用data.responseText
时,我会得到未定义的。有人帮忙。
由于
答案 0 :(得分:0)
以下代码应该可以正常工作。我在你犯错的地方添加了一些评论
var req = $.ajax({
type: 'GET',
cache: false,
url: 'loc.aspx?count=' + str,
dataType: 'html',// as you return a simple html dataType:json will throw an error as jquery will not be able to parse received string
contentType: "application/json; charset=utf-8",
async: false,
data:'{}',
success: function (data) {
alert(data);// data is not an XHR object. it is a processed response. In your case - simple string with HTML which, of course, has no method responseText
}
});
req.fail(function (data) {
TINY.box.show({ html: 'Server Error. Try again: ' + data.responseText, animate: false, close: false, boxid: 'error', top: 100 });
});
在.fail
函数中,您有data.responseText
,因为在这种情况下,XHR对象作为第一个参数传递(请参阅this)。同时,success
回调的第一个参数是随请求收到的干净数据。如果没有详细信息,您可以认为data == xhr.responseText
成功回调。请参阅this部分
<强> UPD 强>
如上所述,问题不仅出现在JS上。我想你有一个简单的.aspx
页面,用ajax调用。有两种解决方案:
1)改用webservice。它会更好,因为它不会经历完整的页面加载循环,应该更快地执行。它不会产生未使用的HTML
2)aspx页面默认会输出一些HTML。在您返回ajax请求的响应之前,您应该清除响应(因此已生成的HTML将不会发送到服务器),编写您的响应并立即结束它:
Response.Clear();
Response.Write("hello");
Response.End();
这样您只能成功收到hello
。