从客户端javascript页面接收数组


Receiving Array from client side javascript page

我正在尝试按数组将表的值发送到服务器。在服务器端php文件中放入echo,我可以看到值以-[value1,value2]等形式传递。但在服务器端php文件中,当我试图使用php数组检索值时,它不起作用。

这是我的客户端JS函数-

function saveData(){
var req;
try{
// Opera 8.0+, Firefox, Safari
    req = new XMLHttpRequest();
    //document.write("2");
    }catch (e){
    // Internet Explorer Browsers
        try{
            req = new ActiveXObject("Msxml2.XMLHTTP");
        }catch (e){
            try{
               req = new ActiveXObject("Microsoft.XMLHTTP");
            }catch (e){
           // Something went wrong
               alert("Your browser broke!");
               return false;
           }
        }
   }
    req.onreadystatechange = function() {
   //Is request finished? Does the requested page exist
   if(req.readyState==4 && req.status==200) {   
        alert(req.responseText);
        //document.getElementById('editgamediv').innerHTML = req.responseText;
    }
}
var table = document.getElementById('POITable');    
var rowCount = table.rows.length; 
var latArray = []
var lngArray = []
var id = []
var id2=[]
var levelname = document.getElementById('leveltext');
//alert(rowCount);
for(var i=1; i< rowCount; i++){
    latArray[i] = table.rows[i].getElementsByTagName('input')[0].value;
    lngArray[i] = table.rows[i].getElementsByTagName('input')[1].value;
    id[i] = levelname+i;
    id2[i] = levelname+i+i; 
    //alert(lngArray[i]);
}

var queryString= "?latArray="+latArray;
queryString+="&lngArray="+lngArray+"&id="+id+"&id2="+id2+"&levelname="+levelname;
req.open("GET","http://aiworker2.usask.ca/PasswARGUI1/addLevel_server.php"+queryString,true)  //true indicates ASYNCHRONOUS
req.send(null);
}

服务器端Php-

$dbhost = myHost; 
$dbuser = my User name;
$dbpass = my Password;
$dbname = "testGame";
    //Connect to MySQL Server
$link= mysql_connect($dbhost, $dbuser, $dbpass);

if (!$link) {
    die('Could not connect: ' . mysql_error());
    echo 'Go n Die';
}
else{
    echo 'Connected successfully';
}
    mysql_select_db($dbname);
    //$latArray = array();
    $latArray=$_GET['latArray'];
    $lngArray[]=$_GET['lngArray'];
    $id[]=$_GET['id'];
    $id2[]=$_GET['id2'];
    $levelname = $_GET['levelname'];
    echo $latArray;
    $printlatArray[0] = $latArray[0];
    echo $printlatArray;
    for($num = 0; $num< count($latArray) ; $num++){
        $sql_zones1 = "INSERT INTO Zones (zone_id, latitude, longitude, tag, relativeAlt, alt, dimension) VALUES
          ('{$id[$num]}', '{$latArray[$num]}', '{$lngArray[$num]}', '{$levelname[$num]}', '0', '10', '3')";
        $sql_zones2 = "INSERT INTO Zones (zone_id, latitude, longitude, tag, relativeAlt, alt,  dimension) VALUES
          ('{$id2[$num]}', '{$latArray[$num]}', '{$lngArray[$num]}', '{$levelname[$num]}', '50', '80','2')";
        $sql_transform1 = "INSERT INTO Transform (poiID, rel, angle, scale) VALUES ('{$id[$num]}', 'true', '0', '3')";
        $sql_transform2 = "INSERT INTO Transform (poiID, rel, angle, scale) VALUES ('{$id2[$num]}', 'true', '0', '4')";
        $sql_object1 = "INSERT INTO Object (poiID, size) VALUES ('{$id[$num]}', '3')";
        $sql_object2 = "INSERT INTO Object (poiID, size) VALUES ('{$id2[$num]}', '3')";

    }
    if (!$result_zones1 || !$result_transform1 || !$result_object1 ||!$result_zones2 || !$result_transform2 || !$result_object2) {
    die('Invalid query: ' . mysql_error());
    }
    else{
        echo "success";
     @mysql_close($link);
     return;
    }

客户端大小上的表是动态的。所以,我甚至不能把这些值放在一个变量中。

急需帮助:(

在您的javascript中,您应该将数组连接到一个以逗号分隔的常规字符串中,然后当PHP接收到这些数组时,您可以将它们explode()返回到一个数组中:

// Javascript
// Join the arrays into comma-delimited strings
var latString = latArray.join(",");
var lngString = lngArray.join(",");
// Later...
// PAss them into the querystring as strings:
var queryString= "?latString="+latString;
queryString+="&lngString="+lngString+"&id="+id+"&id2="+id2+"&levelname="+levelname;
//--------------
// In PHP, explode them back to arrays:
$latArray = explode(",", $_GET['latString');
$lngArray = explode(",", $_GET['lngString');