2014-01-16 205 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

相關問題