基本上我有一个网站,我希望用户输入内容,让它进入服务器进行处理,然后异步返回,将内容加载到div中,然后用jQuery淡入。这样做的最佳方法是什么?
目前这是我的“解决方案”:
$(document).ready(function () {
$('#output-box').hide();
$('#form1').submit(function () {
$.ajax({
type: "POST",
url: "Default.aspx/ParseData",
data: "{ $('#txtInput').val() }",
success: function (msg) {
$('#output-box').text(msg).fadeIn();
}
});
return false;
});
});
它不起作用 - 只返回Default.aspx的内容。那么如何正确地将#txtInput的内容发送到Default.aspx.vb中的ParseData函数呢?此外,这是完成这样的事情的最佳方式吗?我是否应该使用jQuery来发送数据,或者我应该简单地调用该函数并让它获取数据服务器端,将信息放入结果div中,然后使用jQuery显示它?
另外,我发现了类似的问题(并且我自己也提过了类似的问题),但我还没能让它工作......
答案 0 :(得分:1)
除了其他建议之外,您还需要在请求中设置application/json
的contentType。您还需要设置json
的dataType,以确保jQuery正确解释响应。
$.ajax({
type: 'POST',
url: 'Default.aspx/ParseData',
data: '{ "strUserInput" : ' + $('#txtInput').val() + ' }',
dataType: 'json',
success: function (msg) {
// If ASP.NET 2.0:
$('#output-box').text(msg).fadeIn();
// If ASP.NET 3.5+:
$('#output-box').text(msg.d).fadeIn();
}
});
有关.d问题的更多信息,请参阅此帖子:http://encosia.com/2009/02/10/a-breaking-change-between-versions-of-aspnet-ajax/
服务器端方法应该像这样定义:
[WebMethod]
public static ParseData(string strUserInput)
{
return "Message";
}
这篇文章非常清楚:http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/
答案 1 :(得分:0)
更改此
data: "{ $('#txtInput').val() }",
到
data: $('#txtInput').val(),
答案 2 :(得分:0)
对我来说没问题,但您可以尝试更改该行:
data: "{ $('#txtInput').val() }",
到
data: $('#txtInput').val(),