Я пытаюсь разобрать строку JSON с использованием PHP, JSON отправляется в файл PHP с использованием jQuery $.ajax
в этом формате [{"value":"59"},{"value":"7"},{"value":"46"}]
, но по какой-то нечетной причине я продолжаю получать эту ошибку "Invalid argument supplied for foreach()"
, здесь мой PHP и JQuery код,PHP JSON parsing, дающий ошибку
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);
Как вы можете видеть, я использую framewor Zend k для декодирования строки JSON, которая передается в PHP, и формат кажется мне правильным, поэтому я понятия не имею, что еще может быть причиной этой ошибки, может быть, кодирования? Есть идеи?
Thanx заранее!
Попробуйте 'var_dump' на $ json, а также $ test и опубликуйте его, чтобы начать ... – Select0r
Когда я делаю' var_dump' на '$ json', я получаю это ' string (19) "[{\" value \ ": \" 6 \ "}]" и на '$ test' Я получаю' NULL', теперь я использую Zend_Json :: decode() для декодирования JSON, и когда я тестирую его с помощью форматированной строки Я получаю массив, но не тогда, когда я передаю JSON поверх ajax, поэтому я предполагаю, что может быть, что передаваемый JSON не в правильном формате? – Odyss3us
Точный дубликат от того же пользователя: http://stackoverflow.com/questions/3707205/php-foreach-error-invalid-argument-supplied-for-foreach – fabrik