如何从代码后面向AJAX返回值?

时间:2012-09-14 08:39:28

标签: c# asp.net ajax json

  

可能重复:
  How To Return Value From Code Behind To AJAX?

这是我的AJAX代码

$.ajax({
        type: 'POST',
        url: 'country_management.aspx/save',
        cache: false,
        data: "{'parameter':'paramValue'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
                 alert(data.d);
                 if (data.d == "error") {
                    $('.success_box').hide();
                    $('.error_box').show();
                 }
                 else {
                    $('#name').val('');
                    $('.error_box').hide();
                    $('.success_box').show();
                 }
        }
});

代码背后:

[WebMethod]
[ScriptMethod]
public static string save(string parameter)
{
    string name = HttpContext.Current.Request.QueryString["name"].Trim();
    return "error";
}

写完第一行后,return语句不会向AJAX返回任何内容。

2 个答案:

答案 0 :(得分:0)

因为您没有发布任何字段或属性“名称” 如果在单击表单内的按钮后执行ajax,则数据将是序列化的表单。

另一件事是,为什么你应该在查询字符串中看到“name”var,我没有看到任何带有aspx的url?name =“any name”

答案 1 :(得分:0)

不知道整个应用程序的上下文有点难以回答你的问题。 (名称是否从应用程序的其他地方提供,您可以使用会话?)

但是什么阻止你在ajax调用中传递名字?而不是仅通过'参数'发送:'paramValue'。

你必须记住你的查询字符串应该包含你正在寻找的参数。目前它看起来像是。

http://www.somesite.com/country_management.aspx/save?parameter=paramValue

当你真正需要时

<强> e.g。

http://www.somesite.com/country_management.aspx/save?parameter=paramValue&name=newName

<强>的Javascript

$.ajax({
        type: 'POST',
        url: 'country_management.aspx/save',
        data: { parameter:'paramValue', name: 'newName'},
        success: function (data) { 
           //do something with the response
        }         

});

<强>代码隐藏

[WebMethod]
[ScriptMethod]
public static string save(string parameter, string name)
{
    PerformSave(name, parameter);
    return "Data Saved!";
}

提示

试试这款应用。 Fiddler。当你处理诸如ajax调用等事情时,它非常有用。实际上任何web开发。 :)