今天寫了一個簡單的js 結果報錯 以下 javascript
VM1519:1 Uncaught TypeError: Cannot set property 'planId' of undefinedhtml
出現這種狀況的緣由的素組長度的問題java
此段代碼的主要用處就是 經過標籤,將 input 的name和value 獲取出來,而後拼接成一個json串,傳入後臺, 因爲在js中定義data.palnData數組 只是push 了兩個值 ,而在具體的input標籤中 palnData 有三個值分別是 palnData[0],palnData[1],palnData[2] ,所以在執行eval方法的時候 拋出錯誤 json
var postUrl;
var inputs = document.getElementsByTagName("input");
for(var i=0;i<inputs.length;i++){
if(inputs[i].name=='postUrl'){
postUrl = inputs[i].value;
}
else{
var str ="data."+inputs[i].name+"='"+inputs[i].value+"'"
eval(str);
}
}
console.log(JSON.stringify(data));數組
<body id="wrapper" style="margin: 0; text-align: center;"> <div style="margin:30px auto;width: 400px; text-align: right;padding-right: 100px;"> <span style=" display: block; /* margin: 0 auto; */ margin-left: 200px; float: left; font-size: larger; font-weight: bold;">接口測試<br/><br/></span><br/> <div style="clear:both"></div> uuId:<input type="text" name="uuId" value="79238493-081b-466e-a6e8-7aac06f9cfb5"/><br/> platformId:<input type="text" name="platformId" value="1049187503"/><br/> comeFrom:<input type="text" name="comeFrom" value="tmall"/><br/> channelCode:<input type="text" name="channelCode" value="taobao001"/><br/> sendTime:<input type="text" name="sendTime" value="2017-11-08 11:20:00"/><br/> platformSerialNo:<input type="text" name="platformSerialNo" value="2261054563330291"/><br/> requestType:<input type="text" name="requestType" value="01"/><br/> productId:<input type="text" name="productId" value="8000001041"/><br/></br> <b style="margin-left:200px;float:left;">policyData</b></br> paymentType:<input type="text" name="policyData.paymentType" value="5"/><br/></br> <b style="margin-left:200px;float:left;">insuredData</b></br> insuredNo:<input type="text" name="insuredData[0].insuredNo" value="0"/><br/> <!--relation:<input type="text" name="insuredData[0].relation" value="1"/><br/>--> insuredIdNo:<input type="text" name="insuredData[0].insuredIdNo" value="310101198001012574"/><br/> insuredMedicalInsurance:<input type="text" name="insuredData[0].insuredMedicalInsurance" value="N"/><br/></br> <b style="margin-left:200px;float:left;">planData百萬任我行主險</b></br> planId:<input type="text" name="planData[0].planId" value="5000000761"/><br/> planMajor:<input type="text" name="planData[0].planMajor" value="Y"/><br/> planSumIns:<input type="text" name="planData[0].planSumIns" value="50000"/><br/> planPeriod:<input type="text" name="planData[0].planPeriod" value="20"/><br/> paymentPeriod :<input type="text" name="planData[0].paymentPeriod" value="1"/><br/> planUnits:<input type="text" name="planData[0].planUnits" value="1"/><br/> useFlag :<input type="text" name="planData[0].useFlag" value="Y"/><br/> insurantNo:<input type="text" name="planData[0].insurantNo" value="0"/><br/><br/> <b style="margin-left:200px;float:left;">planData交通意外附加險</b></br> planId1:<input type="text" name="planData[1].planId" value="5000000762"/><br/> planMajor1:<input type="text" name="planData[1].planMajor" value="N"/><br/> planSumIns1:<input type="text" name="planData[1].planSumIns" value="50000"/><br/> planPeriod1:<input type="text" name="planData[1].planPeriod" value="20"/><br/> paymentPeriod1 :<input type="text" name="planData[1].paymentPeriod" value="1"/><br/> planUnits1:<input type="text" name="planData[1].planUnits" value="1"/><br/> useFlag1 :<input type="text" name="planData[1].useFlag" value="N"/><br/> insurantNo1:<input type="text" name="planData[1].insurantNo" value="0"/><br/> <br/> <b style="margin-left:200px;float:left;">planData住院日額13</b></br> planId2:<input type="text" name="planData[2].planId" value="5000000801"/><br/> planMajor2:<input type="text" name="planData[2].planMajor" value="N"/><br/> planSumIns2:<input type="text" name="planData[2].planSumIns" value="50000"/><br/> planPeriod2:<input type="text" name="planData[2].planPeriod" value="20"/><br/> paymentPeriod2 :<input type="text" name="planData[2].paymentPeriod" value="1"/><br/> planUnits2:<input type="text" name="planData[2].planUnits" value="5"/><br/> useFlag2 :<input type="text" name="planData[2].useFlag" value="Y"/><br/> insurantNo2:<input type="text" name="planData[2].insurantNo" value="0"/><br/> Post URL:<input type="text" name="postUrl" value="/platform/quoteJSON"/><br/> <button onclick="submit()" >提交</button><br/><br/> <textarea id="result" style="width: 180%;height: 300px;"></textarea> </div> <script type="text/javascript"> function submit(){ document.getElementById("result").innerHTML = ""; var data={}; data.insuredData = []; data.insuredData.push({}); data.planData = []; // data.planData 包括planData[0],planData[1],planData[2] 三部分,此處只是push了兩個素組 , data.planData.push({},{}); data.policyData = {}; var postUrl; var inputs = document.getElementsByTagName("input"); for(var i=0;i<inputs.length;i++){ if(inputs[i].name=='postUrl'){ postUrl = inputs[i].value; } else{ var str ="data."+inputs[i].name+"='"+inputs[i].value+"'" eval(str); } } console.log(JSON.stringify(data)) var r = new XMLHttpRequest(); r.open("POST", postUrl, true); r.responseType='json'; r.setRequestHeader("Content-type","application/json;charset=utf-8"); r.onload = function(e){ if(this.status==200||this.status==304){ console.log(JSON.stringify(this.response)); document.getElementById("result").innerHTML = JSON.stringify(this.response); /* if(this.response.data.result=="1"){ location.href="underWriting_test.html?orderId=" +this.response.data.orderId; } */ } } r.send(JSON.stringify(data)); } </script> </body> </html>