在试图解决我遇到的问题时,我几乎感到沮丧。我正在尝试使用 javascript 在使用 JSON 的同时将一些数据发送到 PHP 服务器。根据我的经验,一旦字符串到达 PHP 服务器并且我使用 json_decode PHP 命令将字符串解码回其 json 格式,它就会失败。它失败了,因为我无法获得关联数组 json_decode 要返回的大小。有趣的是,如果我宁愿将字符串保存到我的数据库中的一列 blob 类型,然后尝试重复使用 json_decode 并使用它返回的关联数组的过程,我会得到积极的结果。
请看一些涉及的代码。
Javascript代码
var products = {
product: [],
companyId: ""
};
products.companyId = nameofCompany;
for(var c=0; c<count; c++)
{
var product = {
productItems: []
};
productTitle=document.getElementById('productTitle' + c).innerHTML;
product.productItems.push({ "productTitle" : productTitle});
products.product.push({ "product" : product});
}
var JSONObject = new Object;
JSONObject = products;
JSONstring = JSON.stringify(JSONObject);
addNewProduct(JSONstring, 'addNewProduct')
//make ajax calls to PHP server here. I have shorted it to show that I am passing the string
function addNewProduct(inputStr, fieldStr)
{
inputValue = encodeURIComponent(inputValue);
fieldID = encodeURIComponent(fieldID);
cache.push("inputStr=" + inputStr + "&fieldStr=" + fieldStr);
if ((xmlHttp.readyState == 4 || xmlHttp.readyState == 0) && cache.length > 0)
{
xmlHttp.open("POST", phpServerAddress, true);
}
}
PHP 代码
下面的代码将不起作用,因为它为 sizeof() 命令返回值 0。但是,如果我将 $_POST['inputStr'] 保存到 blob 类型的数据库列中,然后尝试读取并执行相同的代码,则效果很好
if(isset($_POST['inputStr']))
{
$jsonStrArr= (json_decode($_POST['inputStr'], true));
die sizeof($jsonStrArr);
}
非常感谢