我在php中创建一个网站。我正在使用jquery ajax将数据从一个页面传递到另一个页面。 这是所有页面的一般过程。
我的javascript函数是:
function add_data()
{
var searchinOn = mainObjectAddForm['available_add_fields'].split(",");
var whereOn="{";
var where = "";
for (i=0;i<searchinOn.length;i++)
{
var keyValue= searchinOn[i];
where+=getAddData(mainObjectAddForm[keyValue]['name'],mainObjectAddForm[keyValue]['text'],mainObjectAddForm[keyValue]['datatype'],mainObjectAddForm[keyValue]['data'],keyValue)
}
whereOn+= where.substring(0,where.length-1)+"}";
$.ajax({
type:'POST',
data:whereOn,
url:siteurl + "add/",
dataType:'json',
success:function(data)
{
}
});
}
function getAddData(name,text,datatype,data,keyValue)
{
var control="";
var value1="";
var value2="";
switch(datatype)
{
case "text":
control += "'"+name+"':'"+trim($('#add_form #'+name).val())+"'";
break;
case "password":
control += "'"+name+"':'"+trim($('#add_form #'+name).val())+"'";
break;
case "label":
control += "'"+name+"':'"+trim($('#add_form #'+name).val())+"'";
break;
case "textarea":
control += "'"+name+"':'"+trim($('#add_form #'+name).val())+"'";
break;
}
if (trim(control)=="") return "";
else return control + ",";
}
但在php页面上我没有得到所有的值。它在post变量中作为一个字符串出现。
喜欢
[{'field1':'abc','field2':'pqr','field3':'xyz'}] =>
但我想这样:
Array
{
[field1] => abc
[field2] => pqr
[field3] => xyz
}
我知道问题是ajax数据作为一个字符串传递,因为'{'和'}'在whereOn字符串中。 但是如果我在ajax调用中添加它而不是同样的问题。
任何人都可以帮我解决吗?
答案 0 :(得分:2)
一些建议:
JSON.stringify(..)
功能,所有现代浏览器都支持它。Content-Type: application/json
? POST正文 NOT 百分位编码。因此使用$_POST
数组没有意义。您需要做的是使用file_get_contents('php://input')
读取整个POST主体以获取JSON-String。然后,您可以使用json_decode(..)
将其转换为可以通常方式使用的PHP对象。
$postBody = file_get_contents('php://input');
var_dump($postBody);
$jsonObj = json_decode($postBody);
var_dump(jsonObj);
答案 1 :(得分:0)
如果您正在尝试手工构建json,请查看http://json.org。我建议不要这样做,并使用json来解决这个问题 而是使用application / x-www-form-urlencoded(键/值对)
function add_data()
{
var searchinOn = mainObjectAddForm['available_add_fields'].split(",");
var whereOn={};
var where = "";
for (i=0;i<searchinOn.length;i++)
{
var keyValue= searchinOn[i];
getAddData(mainObjectAddForm[keyValue]['name'],mainObjectAddForm[keyValue]['text'],mainObjectAddForm[keyValue]['datatype'],mainObjectAddForm[keyValue]['data'],keyValue,whereOn)
}
$.ajax({
type:'POST',
data:whereOn,
url:siteurl + "add/",
dataType:'json',
success:function(data)
{
}
});
}
function getAddData(name,text,datatype,data,keyValue,whereOn)
{
switch(datatype)
{
case "text":
whereOn[name] = trim($('#add_form #'+name).val());
break;
case "password":
whereOn[name] = trim($('#add_form #'+name).val());
break;
case "label":
whereOn[name] = trim($('#add_form #'+name).val());
break;
case "textarea":
whereOn[name] = trim($('#add_form #'+name).val());
break;
}
}