【问题标题】:Javascript Ajax to WCF in .NET 3.5.NET 3.5 中的 Javascript Ajax 到 WCF
【发布时间】:2013-12-12 21:29:40
【问题描述】:

我可以将数据从实体框架获取到 javascript 网格 (SlickGrid)。 网格使用 Ajax 从 WCF 框架获取数据。这很好用,但现在我想将一个对象发送回 WCF 服务。如果我调试服务,我会看到 ajax 可以访问该功能。如果我检查对象,则该对象为空。在控制台中,我可以看到我发送了一个对象(检查屏幕截图)。如何捕捉对象以便读取数据?

我就是这样尝试的 WCF:

[OperationContract]
public void Sting(PreEmeaData postData)
{
    var x = 1; //Breakpoint, postData is null?
}

JavaScript:

function sendDataToWcf(object) {
    $.ajax({
        type: "POST",
        url: "DataService.svc/Sting",
        data: JSON.stringify(object),
        processData: false,
        contentType: "application/json",
        dataType: "json",
        success: suckcess,
        error: showError
    });
}

PreEmeaData 类的示例:

[DataContract]
public class PreEmeaData
{
    [DataMember]
    public string BO { get; set; }
    [DataMember]
    public string Agreement { get; set; }

}

更新,显然我发送的数据和我收到的数据之间存在差异。 这就是我将它从 WCF 发送到 Ajax 的方式:

[{"BO":"NL", "Agreement":"201012230314MA"}]

这是我尝试通过 Ajax 发送的内容:

{"__type":"PreEmeaData:#TPlatform","Agreement":"201012230314MA","BO":"NL"}

我通过以下代码发现了我发送的内容:

            IEnumerable<PreEmeaData> list =  newData; //I send the object out like this thats why I use IEnumerable
            var serializer = new JavaScriptSerializer();
            var serializedResult = serializer.Serialize(list);

我发现在使用 ajax 发送数据之前要对数据进行控制台:

console.log(JSON.stringify(object, null, null));

【问题讨论】:

  • 看看我不久前创建的 WCF。我在方法上方也有 [WebInvoke(Method="POST", ResponseFormat = WebMessageFormat.Json)] 。您是否在控制台中遇到任何错误?
  • 不,我没有收到任何错误。他只是进入服务器端函数,并在这个函数中运行代码。但是对象是NULL
  • 另外,什么是:PreEmeaData,你可能想先得到一个简单的字符串来工作。
  • PreEmeaData 是我的类,它的列与网格中的列完全相同。我也使用这个类将它们发送到网格,这很有效。它们都是我在 Javascript 端检查数据类型的字符串。我添加了一个类的例子。

标签: c# javascript jquery ajax wcf


【解决方案1】:

将 DataContract 和 Serializable 属性添加到 PreEmeaData,并确保您的 JSON 与您的类定义匹配。一种测试方法是,使用 JavascriptSerializer 在服务器端对您的实体进行字符串化,然后使用该字符串来测试您的 AJAX 调用。这一直对我有用。

【讨论】:

  • 您的权利,我收到的数据与发送的数据不同。我不知道如何改变这一点。我为 2 个不同的提要更新了帖子
  • 对象,即 sendDataToWcf 的参数,来自哪里?
【解决方案2】:
data: JSON.stringify({ postData: fooObject}),

我把数据改成了这个。 postData 是我在 WCF 代码中赋予对象的变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 2013-03-25
    • 1970-01-01
    • 2010-12-31
    • 2023-03-08
    • 2012-05-13
    相关资源
    最近更新 更多