【发布时间】:2010-09-14 14:14:40
【问题描述】:
我正在尝试使用 PHP 解析 JSON 字符串,使用 jQuery $.ajax 以这种格式 [{"value":"59"},{"value":"7"},{"value":"46"}] 将 JSON 发送到 PHP 文件,但由于某些奇怪的原因,我不断收到此错误 "Invalid argument supplied for foreach()",在这里是我的 PHP 和 jQuery 代码,
jQuery:
$(".systems").each( function(i, system) {
// for each location block
system = $(system);
var sys = {
'value' : $("select[data-prod='products']", system).val()
};
allSystems.push( sys );
});
$.ajax({
type: 'POST',
url: 'systems.php',
dataType: 'json',
data: { systems: JSON.stringify(allSystems), uid: uid },
success: function(data){
alert(data)
}
});
PHP:
require_once 'classes/Zend/Json.php';
$json = $_POST['systems'];
$uid = $_POST['uid'];
$array= Zend_Json::decode("$json");
mysql_connect('localhost','user','pass') or die(mysql_error());
mysql_select_db('products') or die(mysql_error());
//insert the suppliers products into the database
foreach($array as $key){
$query = mysql_query("INSERT INTO suppliersProducts (product_id, supplier_id) VALUES('".$key['value']."', '".$uid."' ) ") or die(mysql_error());
}
print_r($json);
如您所见,我正在使用 Zend 框架的 JSON 解码函数来解码传递给 PHP 的 JSON 字符串,并且格式对我来说似乎是正确的,所以我不知道还有什么可能导致此错误,也许编码?有什么想法吗?
提前谢谢!
【问题讨论】:
-
在 $json 和 $test 上尝试
var_dump并发布它以开始使用... -
当我在
$json上执行var_dump时,我得到这个string(19) "[{\"value\":\"6\"}]"和$test我得到NULL,我现在正在使用 Zend_Json::decode() 来解码 JSON ,当我用预先格式化的字符串测试它时,我得到了数组,但当我通过 ajax 传递 JSON 时却没有,所以我假设可能是传递的 JSON 格式不正确?跨度> -
来自同一用户的完全相同的副本:stackoverflow.com/questions/3707205/…