【问题标题】:Call c# code behind from jquery with parameters [duplicate]使用参数从jquery调用c#代码[重复]
【发布时间】:2015-06-03 15:38:40
【问题描述】:

Ajax 代码

$.ajax({
    type: "POST",
    url: "LiveFeed.aspx/SearchStateList",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (response) {
        $("#Content").text(response.d);
    },
    failure: function (response) {
        alert(response.d);
    }
});

代码背后

[WebMethod]
public static string SearchStateList()
{

}

上面的代码工作正常,后面的代码被调用

但是当我发送如下给出的一些参数时,后面的代码不会被调用,当我看到 Firebug 控制台错误时,它会抛出

NetworkError: 500 内部服务器错误 - http://localhost:61276/App/LiveFeed/LiveFeed.aspx/SearchStateList

Ajax 代码

$.ajax({
    type: "POST",
    url: "LiveFeed.aspx/SearchStateList",
    contentType: "application/json; charset=utf-8",
    data:{value:"samplevalue"},
    dataType: "json",
    success: function (response) {
        $("#Content").text(response.d);
    },
    failure: function (response) {
        alert(response.d);
    }
});

代码背后

[WebMethod]
public static string SearchStateList(string value)
{

}

我也尝试过修改ajax调用的数据为

var param={value:"samplevalue"}

data:JSON.stringify(param),

并且还直接尝试了 JSON.stringify

data:param,

每次我尝试传递参数时,它都没有调用后面的代码并抛出 500 错误。

【问题讨论】:

  • 响应应该是一个 HTML 页面,其中包含您在控制台中阅读的“内部错误”的更详细描述(和堆栈跟踪)
  • @MairajAhmad 谢谢它的工作,但是当我以某种方式搜索时,我错过了这个问题。再次感谢。
  • @TechJerk 如果您不介意,请为答案投票。

标签: javascript c# jquery asp.net ajax


【解决方案1】:

你为什么不试试

var param={"value":"samplevalue"}

data:JSON.stringify(param),

【讨论】:

  • 我就是这样做的。
【解决方案2】:

我认为数据内容带有引号:

data: '{value:"samplevalue"}',

【讨论】:

  • 您永远不应该手动构建自己的 JSON 字符串 - JSON.stringify 将为您完成工作,包括根据需要转义特殊字符。如果您自己这样做,您就会面临在测试中可能无法发现的错误或解析错误。
  • 另外,这不是有效的 JSON,因为在 JSON 中(与 javascript 对象文字不同),必须引用键。
  • 好的,谢谢您的信息
【解决方案3】:

您可以通过访问Request Collection来访问数据中发送的变量。

Request.Form["your_var_name"]  // use this when you $.post
Request["your_var_name"] // use this when you $.get

所以你的代码可以如下所示:

public static string SearchStateList(string value)
{
    Response.Write("The value of value is: " + Request.Form["value"]);
}

【讨论】:

    【解决方案4】:

    在您的 Ajax 帖子中,您已将 data 属性设置为:-

    data:{value:"samplevalue"}  
    

    细微的变化,下面的这个就可以了:-

     data:{ "value" :"samplevalue"}
    

    【讨论】:

    • 想知道为什么投反对票。
    • 您没有对您的建议或为什么会有所作为提供任何解释,并且您输入的内容正是他们在问题中已经尝试过的内容(引用了 javascript 中的密钥对象字面量不会改变任何东西,因此这与data:{value:"samplevalue"} 完全相同。
    • 再看一遍,用户尝试了 :- data:{value:"samplevalue"} - 在他的 ajax 帖子中。我建议数据:{“value”:“samplevalue”}。关于缺乏解释的注意点。
    • 正如我所说,仅引用 javascript 文字中的键不会改变任何内容。 data:{value:"samplevalue"}data:{ "value" :"samplevalue"} 在 javascript 中完全一样。请记住,javascript 对象文字与 JSON 不同 - javascript 对象文字不需要带引号的键。
    猜你喜欢
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 2015-08-11
    • 2013-12-07
    相关资源
    最近更新 更多