【问题标题】:How to return value to AJAX from code behind? [duplicate]如何从后面的代码向 AJAX 返回值? [复制]
【发布时间】:2012-09-14 08:39:28
【问题描述】:

可能重复:
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 返回任何内容。

【问题讨论】:

  • 您返回的不是 JSON,而是一个纯字符串。看看这个stackoverflow.com/questions/5364343/…
  • 你确定QueryString["name"] 没有返回null
  • 你是说这行之后出错了吗?字符串名称 = HttpContext.Current.Request.QueryString["name"].Trim();
  • 您是否 - 真的 - 只是为此目的创建了重复帐户?
  • @Rohan 我返回“错误”只是为了检查它是否被返回。如果我不写第一行,return 语句会返回...

标签: c# asp.net ajax json


【解决方案1】:

在不了解整个应用程序的上下文的情况下很难回答您的问题。 (名称是否从应用程序的其他地方提供,您可以使用会话吗?)

但是是什么阻止您在 ajax 调用中传递名称?而不是仅仅通过'parameter':'paramValue'发送。

您必须记住您的查询字符串应该包含您要查找的参数。目前它看起来像。

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

当你真正需要时

例如

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 开发。 :)

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-31
      • 2018-04-27
      • 2017-07-09
      相关资源
      最近更新 更多