假设我有一个javascript对象数组,我试图将这些对象传递给php页面以将它们保存到数据库中。我没有问题将变量传递给php并在该变量上使用$ _POST [“entries”],但我无法弄清楚如何传递整个对象数组,因此我可以访问我的objects.entryId和.mediaType值在php页面上。
哦,在任何人问之前,是的,我需要这样做的原因是因为我有一个flash上传器,你猜对了..上传到CDN服务器(远程),远程服务器只回复这样js对象。
感谢任何人提供的任何帮助。
这是我的JS功能:
function test() {
entriesObj1 = new Object();
entriesObj1.entryId = "abc";
entriesObj1.mediaType = 2;
entriesObj2 = new Object();
entriesObj2.entryId = "def";
entriesObj2.mediaType = 1;
var entries = new Array();
entries[0] = entriesObj1;
entries[1] = entriesObj2;
var parameterString;
for(var i = 0; i < entries.length; i++) {
parameterString += (i > 0 ? "&" : "")
+ "test" + "="
+ encodeURI(entries[i].entryId);
}
xmlhttp.open("POST","ajax_entries.php",true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", parameterString.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.onreadystatechange = handleServerResponseTest;
xmlhttp.send(parameterString);
}
function handleServerResponseTest() {
if (xmlhttp.readyState == 4) {
if(xmlhttp.status == 200) {
alert(xmlhttp.responseText);
}
else {
alert("Error during AJAX call. Please try again");
}
}
}
答案 0 :(得分:3)
也许你需要看看json和jQuery ajax方法:
.- http://blog.reindel.com/2007/10/02/parse-json-with-jquery-and-javascript/
.- http://us.php.net/json_decode
由于jQuery的最后版本是1.3.x,因此可能有点过时,但是你会得到一个关于PHP json函数的想法......如果你的服务器没有启用json扩展,你可以使用一些php类:
.- http://google.com.co/search?rlz=1C1GPEA_enVE314VE314&sourceid=chrome&ie=UTF-8&q=php+json+class
祝你好运!答案 1 :(得分:3)
我也有同样的麻烦。但谷歌搜索帮助。
我试着调整和测试。我明白了我虽然使用POST
方法。请使用GET
方法尝试这个想法。这是一个想法:
将方括号内的数组索引值附加到数组的Post / Get变量名称。为每个数组元素执行此操作。
以下脚本的var parameters="&Name[0]="+namevalue1+"&Name[1]="+namevalue2;
部分会给您一个提示。
这是我使用的测试JS(再次使用POST
方法而不是GET
):
var xmlAJAXObject;
function test() {
xmlAJAXObject=GetxmlAJAXObject();
if (xmlAJAXObject==null) {
alert ("Oops!! Browser does not support HTTP Request.");
return false;
}
var namevalue1=encodeURIComponent("Element 1");
var namevalue2=encodeURIComponent("Element 1");
var parameters="&Name[0]="+namevalue1+"&Name[1]="+namevalue2;
xmlAJAXObject.open("POST", "test.php", true);
xmlAJAXObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlAJAXObject.setRequestHeader("Content-length", parameters.length);
xmlAJAXObject.onreadystatechange=stateChanged;
xmlAJAXObject.send(parameters);
}
function stateChanged() {
if (xmlAJAXObject.readyState ==4) {
if (xmlAJAXObject.status == 200) {
alert('Good Request is back');
document.getElementById("show").innerHTML=xmlAJAXObject.responseText;
}
}
}
function GetxmlAJAXObject() {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
if (window.ActiveXObject) {
// code for IE6, IE5
return new ActiveXObject("Microsoft.Microsoft.XMLHTTP");
}
return null;
}
这对我有用。对不起格式化和不完整的代码。我打算给出一个方向。 Google reault网站无法提供解决方案。希望你觉得这很有用。