【问题标题】:Read Post Data With C#使用 C# 读取发布数据
【发布时间】:2013-02-11 12:16:25
【问题描述】:

我正在使用 Jquery Ajax 函数从 html 页面发送数据,并且我正在使用 C# 在后端读取它。

我用Get的时候,数据发送成功,但是当我切换到Post的时候,后端的数据值为null。

HTML:

<form onsubmit="AddData();>
<input type="submit"value="Submit" />
</form>

Javascript:

function AddData() {
            var RData = GetRData();
            var postData = { 'Function': "AddData", 'RData': JSON.stringify(RData) };
            $.ajax(
            {
                type: "POST",
                url: "/Services/GetRData.aspx",
                data: postData,
                contentType: "application/json; charset=utf-8",
                dataType: "jsonp",
                jsonp: 'jsoncallback',
                success: function (result) { 
                AddClubCallBackFunction(result) },
                error: function (msg) {
                    alert('Sorry, an error occured while adding your Data!');
                }
            });
        }

C#:

string FunctionName =Request["Function"]; //null
string RData = Request.Form["RData"]; //null

那么,我做错了什么以及如何解决?

更新:

我刚刚删除了

contentType: "application/json; charset=utf-8",

它奏效了。

【问题讨论】:

  • 为什么要提交到 ASPX 页面?只创建一个 Web 服务(WCF 或 ASMX)会容易得多,不是吗?
  • result.d 可以解决问题...
  • AddClubCallBackFunction(result.d)
  • 必须先取消表单提交:&lt;form onsubmit="AddData(); return false;"&gt;否则数据会由表单提交自己发送,AJAX会丢失。

标签: c# javascript jquery post


【解决方案1】:

假设上面的代码正是你正在执行的,似乎确实有一个错字:

var Data = GetRData();
var postData = { 'Function': "AddData", 'RData': JSON.stringify(RData) };

您的变量是 Data,但您在尚未声明的 RData 上调用 JSON.Stringify(因此为 null 属性)。

更新

根据您的最后评论,我会说这是 JSON 格式问题。当您尝试手动构建您在解决方案中部分执行的 JSON 对象时,通常会发生这种情况。我会将您的代码更改为:

var rdata = GetRData();
var postData = { Function: 'AddData', RData: JSON.stringify(rdata) };
$.ajax({
    ...
    data: JSON.stringify(postData),
    ...
});

【讨论】:

  • 是的,你是对的。我修复了它,但它仍然无法正常工作。 "函数也没有正确读取。
  • @SanaJoseph "nothing is returned" - 你说的是服务器没有返回任何东西还是发送 > 到服务器?你需要更清楚你的说法,因为这是两个完全不同的问题。
  • @SanaJoseph 告诉我您的 JSON 无效,因为服务器无法解析它。查看我的更新。
  • @SanaJoseph "JSON 怎么会无效?" - 实际上很容易,但并不总是很明显。您实际上并没有通过发送 JSON 的方式将其传递给服务器,而是传递了一个 javascript 对象(这是完全不同的)。您需要在 postData 参数本身上调用 stringify
  • 那么,如果您将内容类型更改为application/json,它会起作用吗?您正在告诉服务器您发送 JSONP,但实际上您只是发送 JSON。对于 JSONP,您通常将 callback 参数附加到 URL,例如/Services/GetRData.aspx?callback=AddData
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-21
  • 2021-05-28
相关资源
最近更新 更多