将复杂类型作为数据传递给 jquery ajax post

2024-03-10

我的数据模型类如下所示:



[DataContract]
public class Order
{
    [DataMember]
    public string Id { get; set; }
    [DataMember]
    public string AdditionalInstructions { get; set; }
    [DataMember]
    public double TotalAmount { get; set; }
    [DataMember]
    public DateTime OrderDate { get; set; }
    [DataMember]
    public Customer Customer { get; set; }
    [DataMember]
    public OrderedProduct OrderedProduct { get; set; }
}
[DataContract]
public class OrderedProduct
{
    [DataMember]
    public int Id { get; set; }
    [DataMember]
    public string Name { get; set; }
    [DataMember]
    public double Price { get; set; }
    [DataMember]
    public int Quantity { get; set; }
}
[DataContract]
public class Customer
{
    [DataMember]
    public string FirstName { get; set; }
    [DataMember]
    public string LastName { get; set; }
}
  

我的WCF运营合同是:



[WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
[OperationContract]
string SaveOrder(Order order);
  

我的 ajax 调用如下所示:



function SaveOrder() {
    var orderJson = {
        AdditionalInstructions: $("span:first").text(),
        Customer: { FirstName: $("#firstName").val(), LastName: $("#lastName").val() },
        OrderedProduct: { Id: $("#productList").val(), Quantity: $("#quantity").val() }
        };

    // the post to your webservice or page
    $.ajax({
        type: "POST", //GET or POST or PUT or DELETE verb
        url: "http://localhost:14805/OrderService.svc/SaveOrder", // Location of the service
        data: orderJson, //Data sent to server
        contentType: "application/json; charset=utf-8", // content type sent to server
        dataType: "json", //Expected data format from server
        processdata: false, //True or False
        success: function (result) {//On Successfull service call
            alert(result);
        },
        error: function (result) {// When Service call fails
            alert('Service call failed: ' + result.status + ' ' + result.statusText);
        }
    });
}
  

但是当我拨打此电话时,我收到 400:错误的请求状态。这是 Google Chrome 中标题的样子:



Request URL:http://localhost:14805/OrderService.svc/SaveOrder
Request Method:POST
Status Code:400 Bad Request
Request Headers
Accept:application/json, text/javascript, */*; q=0.01
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:165
Content-Type:application/json; charset=UTF-8
Host:localhost:14805
Origin:http://localhost:14805
Referer:http://localhost:14805/index.html
User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.127 Safari/534.16
X-Requested-With:XMLHttpRequest
Request Payload
AdditionalInstructions=dbl-click+here+to+add+notes!&Customer;%5BFirstName%5D=asdf&Customer;%5BLastName%5D=fdsa&OrderedProduct;%5BId%5D=3&OrderedProduct;%5BQuantity%5D=12
Response Headers
Cache-Control:private
Connection:Close
Content-Length:1647
Content-Type:text/html
Date:Mon, 07 Mar 2011 19:14:57 GMT
Server:ASP.NET Development Server/10.0.0.0
X-AspNet-Version:4.0.30319
  

请让我知道如何纠正这个问题。

谢谢, 阿伦


解决这个问题有两个问题。 1.我的服务本身有一些bug(这是我的错) 2. 我必须对 orderJson 对象执行 JSON.stringify() 。



function SaveOrder() {
    var orderJson = {
        AdditionalInstructions: $("span:first").text(),
        Customer: {
            FirstName: $("#firstName").val(),
            LastName: $("#lastName").val()
        },
        OrderedProduct: {
            Id: $("#productList").val(),
            Quantity: $("#quantity").val()
        }
    };

    // the post to your webservice or page
    $.ajax({
        type: "POST", //GET or POST or PUT or DELETE verb
        url: "http://localhost:14805/OrderService.svc/SaveOrder", // Location of the service
        data: JSON.stringify(orderJson), //Data sent to server
        contentType: "application/json; charset=utf-8", // content type sent to server
        dataType: "json", //Expected data format from server
        processdata: false, //True or False
        success: function (result) {//On Successfull service call
            RedirectToMvcApp(result);
        },
        error: function (request, error) {// When Service call fails
            alert('Service call failed: ' + request.status + ' ' + request.statusText);
        }
    });
}
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将复杂类型作为数据传递给 jquery ajax post 的相关文章

  • 指定 HTML5 输入类型 = 日期的值输出?

    我想将本机日期选择器添加到我的应用程序中 该应用程序当前使用遗留的本地系统 日期输入支持尚未广泛普及 但如果我可以基于兼容性提供这两种实现 那就太理想了 有没有办法指定 HTML 日期选择器给出的值的输出 歌剧的默认设置是yyyy mm d
  • 如何让php页面从html页面接收ajax post

    我有一个非常简单的表单 其中有一个名字输入字段 我捕获了表单数据 并使用标准 jQuery 发布方法通过 ajax 将其传输到 PHP 页面 但是 我根本无法从 PHP 页面获得任何在服务器端捕获数据的响应 我不确定我做错了什么或缺少什么
  • 如何强制下载图片?

    我的页面上有一个动态生成的图像 如下所示 img src 我不想告诉我的用户右键单击图像并点击保存 而是想公开一个下载链接 单击该链接将提示下载图像 如何实现这一目标 最初我在 js 中尝试这样做 var path my image att
  • 更改 Jumbotron 不透明度并使其全宽,而不影响字体和按钮

    想问一下如何更改 Jumbotron 不透明度并使其全宽而不影响字体和按钮的不透明度 jumbotron special text align center background attachment scroll background i
  • 如何通过单击图像按钮上传新文件

    我有一项任务是通过单击图像按钮上传新文件 我的代码是
  • 使用 Polymer 通过 HTML 导入包含 jQuery 在 Safari 和 Firefox 中不起作用

    我尝试通过 HTML 导入将 jQuery 包含在主页中 但它只在 Chrome 中有效 Safari 和 Firefox 都会在主页 JavaScript 代码的第一行抛出 ReferenceError 未定义 消息 看来页面上的 Jav
  • 使用 jQuery 在页面加载时将字符串添加到 url?

    我试图在页面加载时将此特定字符串添加到我的网址末尾 aa campaign f45632 http examplesite com test html http examplesite com test html 它用于营销和跟踪 我试过这
  • jQuery 的简单日历网格

    我发现的大多数可爱的日历组件对于我的简单要求来说都太复杂了 我需要显示月份网格 并指示是否已预订个别日期 我不需要每天处理多个活动 等等 我想我可以调整其中一个以始终将预订扩展为全天活动 读者对此有何建议 我的目标是显示住宿加早餐预订的日期
  • 如何在加载ajax内容和javascript时加载gif图像[重复]

    这个问题在这里已经有答案了 我一直在尝试加载 gif 图像 直到 ajax 加载数据并显示它 但我对此感到安慰 我希望你能帮助我 这是我的高级搜索代码 现在我想为此添加加载 gif ajax type POST url base rul s
  • 单击时获取元素的 id(php、jquery、ajax、javascript)

    抱歉 这是我的第一个项目 我学到了很多东西 因此 如果有人可以帮助我 我将不胜感激 我的项目中有这个侧边栏 其中包含 rss 链接 我必须使用 ajax 因此每次用户单击任何 rss 链接时 提要都会出现在屏幕上 这是我的侧边栏代码 div
  • 使 bootstrap popover 使用自定义 html 模板

    我正在使用输入组文本框 我需要 Bootstrap 3 弹出框才能工作 并且弹出框模板应由我定义和设计 所以我目前拥有的 html 是 div class row div class col sm 2 div class input gro
  • ScrollTop 在 Chrome/Safari 中不起作用

    我的网站上有一个循环内的表单 当有人提交表单时 查询字符串会添加到 URL 中 例如 updated 111 然后 我的 JQuery 脚本检查数字的 url 并在提交表单并重新加载页面后滚动到该 div 该脚本在 Firefox 中运行良
  • 如何根据另一个动态下拉列表的值创建动态下拉列表?

    我有一个下拉菜单 当我选择一个选项时 它会创建一个动态下拉菜单 到目前为止 一切都很好 但我想创建另一个动态下拉列表 现在基于另一个动态下拉列表的值 我该怎么做 第一个动态下拉列表有效 我猜第二个无效 因为动态变量 div 没有静态 ID
  • 如何防止默认事件触发但仍允许事件冒泡

    使用 jQuery 使用以下代码 我想防止 href url 在本例中为哈希 在单击时触发 但仍然允许单击事件继续在链上冒泡 请问如何实现这一点 div a href Test a div a click function e stop a
  • 从对象获取数据 - 我看到数据但无法保存它们

    正如你所看到的 我是新来的 我确实尝试过搜索 但没有找到解决我问题的方法 所以这是我的问题 如果我这样做 console log grid data kendoGrid data 这在控制台中显示如下 所以我明白这一点 有一个数组和一个带有
  • jquery 事件委托

    我正在尝试使用事件委托重写一段代码 希望它能停止与另一个 js 代码段发生冲突 但我已经破解了密码 原来的 to scale up on hover var current h null var current w null piccon
  • jQuery 时间戳之前的时间?

    下面是一个非常好的 jQuery 插件 与他们在 SO 上使用的插件非常相似 对我来说问题是它用它来转换时间
  • jquery 表单使用 .on() 提交

    我正在尝试发送由 jquery 创建的表单 该表单附加到一个 div 中 下面的变量 data 是使用 php 创建的 我将只发布最重要的 js 代码 我尝试了很多带有和不带 on 的方法 但我未能让警报框显示 1 以便我知道代码块实际上已
  • 如何使用 jQuery 获取 div 完整内容的高度?

    我正在尝试创建自己的滚动条 我已经尝试了大多数 jquery 滚动条插件 但似乎没有一个适合我 所以我决定创建自己的 我有一个带有可滚动内容的溢出区域 如果我能够计算出可滚动内容区域的高度 我就可以使滚动条正常工作 我尝试过 scrollH
  • phonegap:基于 cookie 的身份验证 (PHP) 不起作用 [webview]

    我正在开发一个移动网络应用程序 使用 sencha touch HTML5 和 Phonegap 作为包装器 我正在使用 PHP 身份验证 Cookie 和 ajax 请求 在 safari 或 chrome 上一切正常 但在使用phone

随机推荐