首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用日期将JQuery JSON发送到WCF

使用日期将JQuery JSON发送到WCF
EN

Stack Overflow用户
提问于 2010-12-18 04:04:13
回答 4查看 21.1K关注 0票数 18

我知道有很多关于通过JQuery/JSON使用WCF REST的帖子,但是我不能让它工作。我现在被一个日期参数卡住了。下面是我的C#方法:

代码语言:javascript
复制
[OperationContract]
[WebInvoke]
[TransactionFlow(TransactionFlowOption.Allowed)]
string GoodRegister(DateTime pDtTimeStampTransac, Int32 pIDResource, Decimal pQty, enQtyLogType pQtyGoodLogType);

下面是我的JavaScript代码:

代码语言:javascript
复制
/// <reference path="../Scripts/jquery-1.4.1-vsdoc.js" />
/// <reference path="json.js" />

Date.prototype.toMSJSON = function () {
  var date = '\\\/Date(' + this.getTime() + ')\\\/';
  return date;
};

function botaoclick() {
  var date = new Date().toMSJSON();
  var datavar = {
    'pDtTimeStampTransac': date,
    'pIDResource': 1,
    'pQty': 1
  };
  $.ajax(
  {
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "http://desk01:9876/ShopFloorService/script/GoodRegister",
    dataType: "json",
    data: JSON.stringify(datavar),
    //data: '{"pDtTimeStampTransac":date, "pIDResource":"teste", "pQty":"3"}',
    error: jqueryError,
    success: function (msg) {
      alert("back");
      var divForResult = document.getElementById("test");
      divForResult.innerHTML = "Result: <b>" + msg.d + "</b>";
    }
  }
  )
}

function jqueryError(request, status, error) {
  alert(request.responseText + " " + status + " " + error);
}

我的第一个问题是我一直收到一个日期序列化错误:

代码语言:javascript
复制
{"ExceptionDetail":{"HelpLink":null,"InnerException":{"HelpLink":null,"InnerException":{"HelpLink":null,"InnerException":null,"Message":"DateTime content '\\\/Date(1292616078638)\\\/' does not start with '\\\/Date(' and end with ')\\\/' as required for JSON.","StackTrace":"   at System.Runtime.Serialization.Json.JsonReaderDelegator.ParseJsonDate(String originalDateTimeValue)\u000d\u000a   at 

它说它不是以开始和结束的方式开始/结束的。

我的第二个问题是:我必须获得枚举数,还是有办法发送它?

EN

回答 4

Stack Overflow用户

发布于 2013-04-12 00:11:40

下面是您使用JSON.stringify()放在客户端的This post (修改后)的解决方案:

代码语言:javascript
复制
jsonData = JSON.stringify([new Date()], 
    function (k, v) { return this[k] instanceof Date ? '/Date(' + v + ')/' : v; });

它可以在最新的IE、Chrome和Firefox中运行。

查看JSON.stringify (一种本机方法)和replacer参数,以获得有关转换枚举的提示。

票数 0
EN

Stack Overflow用户

发布于 2015-09-09 04:00:22

Alsalaam Aleykum.

您所要做的就是对错误做出响应。我的意思是更改日期格式,以便json可以将其解析为web服务。

您的代码应如下所示:

代码语言:javascript
复制
       function botaoclick() {

         var date = new Date();
         date = "\/Date(" + date.valueOf() + ")\/";
         // valueOf() method Returns the primitive value of a Date object.

         var datavar = {
           'pDtTimeStampTransac': date,
           'pIDResource': 1,
           'pQty': 1
         };

         $.ajax({
           type: "POST",
           contentType: "application/json; charset=utf-8",
           url: "YOUR URL",
           dataType: "json",
           data: JSON.stringify(datavar),
           error: jqueryError,
           success: function(msg) {
             alert("back");
             var divForResult = document.getElementById("test");
             divForResult.innerHTML = "Result: <b>" + msg.d + "</b>";
           }
         })
       }

       function jqueryError(request, status, error) {
         alert(request.responseText + " " + status + " " + error);
       }

票数 0
EN

Stack Overflow用户

发布于 2017-04-23 00:47:23

在传递到wcf之前,应该有一个通用的方法来正确地格式化日期。

该方法可能如下所示:

代码语言:javascript
复制
var dateToWcf = function(input)
{
    var d = new Date(input); 
    if (isNaN(d)) return null;     
    var formattedDate = { date : "/Date(" + d.getTime() + ")/" };
    return formattedDate;
}

然而,现在如果你post,它会附加基于实际时区的偏移值,从那里你是posting.So,为了避免这种情况,你可以相应地调整偏移量。

代码语言:javascript
复制
var formattedDate = { date: "/Date(" + d.getTime() + d.getGMTOffset() + ")/" };
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4474352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档