如何将var数组从html发送到php

时间:2017-06-03 07:00:29

标签: javascript php html

将var数组从html发送到php的最佳方法是什么? 我尝试过使用serialise,但似乎无法正常使用。 感谢

//HTML
var arrayTextAreasNames = ['1','2','3'];
xhttp.open("GET", "MyPhpScript.php?hId=" + inputId + "&arrayTextAreasNames=" + serialize(arrayTextAreasNames), true);
//Note: along with the array I am also sending another variable called inputId

//PHP
$arrayTextAreasNames = unserialize($_GET["arrayTextAreasNames"]); 
console.log($arrayTextAreasNames); //The array is not read properly in php (empty!)

3 个答案:

答案 0 :(得分:0)

这很脏,但也许是这样的:

var arrayString = "";

for (int i = 0; i < varArray.length; i++)
{
    arrayString += "&element" + i + "=" + varArray[i];
}

然后您可以将arrayString添加到URL

答案 1 :(得分:0)

你必须在Javascript中执行两个步骤。

  1. stringify对象:它必须是HTTP GET到服务器的字符串。
  2. 编码有效URI:编码合法URI字符串。
  3. &#13;
    &#13;
    var arrayTextAreasNames = ['1','2','3'];
    var jsonstring = JSON.stringify(arrayTextAreasNames);
    console.log('before encode, ', jsonstring);
    
    var encoded = encodeURIComponent(jsonstring);
    console.log('encoded, ', encoded);
    
    /// xhttp.open("GET", "MyPhpScript.php?hId=" + inputId + "&arrayTextAreasNames=" + encoded, true);
    &#13;
    &#13;
    &#13;

    在PHP中(Live demo here), 然后,您可以解码回预期的字符串。

    $uri = '%5B%221%22%2C%222%22%2C%223%22%5D';
    $result= urldecode($uri);
    

答案 2 :(得分:0)

只需使用JSON.stringify将数组转换为json,然后使用encodeURIComponent

传递它
var arrayTextAreasNames = ['1','2','3'];
var jsonString = JSON.stringify(arrayTextAreasNames);

xhttp.open("GET", "MyPhpScript.php?hId=" + inputId + "&arrayTextAreasNames=" + encodeURIComponent(jsonString), true);

在php中,您使用rawurldecode

解码json ny
$arrayTextAreasNames = json_decode(rawurldecode($_GET['arrayTextAreasNames']));