2014-01-16 150 views
0

我有下面的代码在那里它增加了项目JSON字符串,为什么jquery .push()在这种情况下不起作用?

function addOrder(req, orderId, orderSource, transactiondtm) { 
    alert(orderId); 
    req.Request.orderslist.push({ ordid: orderId, 
           ordsource: orderSource, 
           tranndtm: transactiondtm }); 
} 
function getDisplayPts(){ 

    var req = { 
       "Request": { 
       "-xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance", 
       "number": Num, 
       "orderslist": { 
        "ordid":  [], 
        "ordsource": [], 
        "tranndtm": [] 
       } 
       } 
      }; 
    $('#msListingProducts ul.msRows li input').each(function(index) { 

     addOrder(req,$('#hfOrderId'+index).val(),$('#hfOrderSource'+index).val(),$('#hfOrdTranDate'+index).val()); 
     }); 
    var str = JSON.stringify(req); 
    alert(str); 
    } 

我得到req.Request.orderslist.push()不是一个函数。任何建议。对于一些行的订单ID即将为未定义是不是因为那?

编辑: 我需要的JSON格式是,

{ 
    "Request": { 
    "-xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance", 
    "memNum": "70000211981", 
    "orderslist": [ 
     { 
     "ordid": "511", 
     "ordsource": "ONLINE", 
     "transactiondttm": "2014-01-09" 
     }, 
     { 
     "ordid": "512", 
     "ordersource": "STORE", 
     "tranndttm": "2014-01-09" 
     } 
    ] 
    } 
} 
+0

您试图访问对象元素作为数组,因此它给出了一个错误。这里'req.Request.orderslist'是一个对象,.push()方法是将数据推入数组,因此它给出了一个错误。为了解决这个问题,'req.Request.orderslist'是一个数组,然后在其中推入记录。 –

+0

@SohilDesai你能解释一下吗? – coderman

+0

检查我的答案。 –

回答

2

您试图访问对象元素作为数组,因此它给出了一个错误。当你准备一个对象请求它应该是这样的

var req = { 
      "Request": { 
      "-xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance", 
      "number": Num, 
      "orderslist": [] 
      } 
     }; 

现在,你可以使用push方法。

1

orderslist是在上下文中的object,你不能push任何东西进去。但是,你可以把这些值成以下,

req.Request.orderslist.ordid.push(orderId) 
req.Request.orderslist.ordsource.push(orderSource) 
req.Request.orderslist.tranndtm.push(transactiondtm) 
+0

你需要[推'value'有一个参数](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push)。检查我的[答案](http://stackoverflow.com/a/21153114/1671639) – Praveen

+1

@PraveenJeganathan是的,当然,是的。 :)感谢编辑我的答案。 –

+0

我已编辑你的答案:)希望那是好吗? – Praveen

1

.push()是为arrayorderslist你的情况object。因此它不起作用。

ordid, ordsource, tranndtm是数组。因此,

req.Request.orderslist.ordid.push(orderId) 
req.Request.orderslist.ordsource.push(orderSource) 
req.Request.orderslist.tranndtm.push(transactiondtm) 
+0

@coderman我仍然不知道是什么导致了问题。但是我已经制作了一个http://jsfiddle.net/Nj2w7/以使它更容易。 – Praveen

相关问题