2017-09-13 74 views
1

我正在擴展用HTML,PHP和純JavaScript編寫的內部Web應用程序項目。我想將javascript整數數組與其他輸入一起發佈到另一個PHP文件中以供進一步處理。html php POSTing javascript integer數組

A的,我想達到什麼樣的非常簡化的版本是這樣的:

form.php的

<form action="post.php" method="POST"> 
    <!-- along with other inputs --> 
    <input type="hidden" id="ints" name="ints"> 
    <input type="submit" name="submit" id="submit" value="SUBMIT"> 
</form> 
<script> 
    var ints = [2,4,6]; 
    document.getElementsByName("ints").value=ints; 
</script> 

post.php中

if (isset($_POST['ints'])){ 
    var_dump($_POST['ints']); //expected an array of numbers or strings 
}else{ 
    echo "not POSTed"; 
} 

但似乎我沒有發表它。我已嘗試將輸入字段ints設置爲ints[]並嘗試使用getElementById。我得到的最好的是一個字符串「2,4,6」,我可能已經在PHP中使用explode()這樣做了,但我想知道是否有更好的選項。

我想堅持純JavaScript,但如果它不可能,我可能會嘗試其他東西,如jQuery。任何提示和建議表示讚賞。

+2

[傳遞數組使用Html表單隱藏元素]的可能的副本(https://stackoverflow.com/questions/6547209/passing-array-using-html-form-hidden-element) – Script47

+0

你不應該發送數組在輸入領域。用','逗號分隔發送數值 –

+0

並非如此重複。根據我的理解,該鏈接想要發佈一個PHP數組。 W-well,我只是想知道是否有更簡潔的方法來完成這項工作,也許...... –

回答

0

輸入中的值是字符串。你應該使用序列化JSON數組使用AJAX兩種或XmlHttpRequest的(更好的)傳遞整數數組

submit.onclick = function(){ 

    ints = [1,2,3]; 

    var request = new XMLHttpRequest(); 

    request.open('POST', '/my/url', true); 

    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 

    request.send({ 
     ints : ints 
    }); 

} 
1

嘗試更換此:

document.getElementsByName("ints").value=ints; 

...這一點:

document.getElementsByName("ints")[0].setAttribute("value", ints); 

getElementsByName()返回的節點列表上似乎沒有value屬性,這與您在上面的代碼中嘗試使用它的方式相同。請注意,如果正確的元素不是getElementsByName()的第一個(也許是唯一的)匹配項,則必須更改上面的索引,或者使用其他方式選擇元素,如類。

+0

D-Does not'st對我。 –