将数据传递到服务器并异步更新

时间:2010-07-31 18:34:33

标签: asp.net jquery ajax asynchronous

基本上我有一个网站,我希望用户输入内容,让它进入服务器进行处理,然后异步返回,将内容加载到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显示它?

另外,我发现了类似的问题(并且我自己也提过了类似的问题),但我还没能让它工作......

3 个答案:

答案 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(),