Код jquery:
$(document).ready(function(){
var object1;
$(document).on("click",".button1",function(){
object1={"key1":"123"}
$.ajax({
url:'ajax.php',
type:"POST",
dataType:"json",
data:"param2="+JSON.stringify(object1),
success:function(response){
console.log(response);
JSON.parse(JSON.stringify(response));
console.log(response);
$('#addword').html(response);
}
})
});
});
Код ajax.php:
<?php include 'trainingmassiv.php';
if($_POST["param2"]){
echo json_encode($_POST["param2"]);
}
?>
Имеется span с id = "addword", куда записывается результат.
При нажатии на кнопку создаётся объект jquery и с помощью ajax-запроса отправляю объект Jquery в php, а затем обратно в jquery.
Объект записываю в переменную param2, затем обращаюсь к ней в PHP через $_POST.
Если передать в jquery только сам объект, то он печатается в виде: {"key1":"123"}, но если я хочу передать Jquery значение "123" ключа key1, то прописываю вместо:
echo json_encode($_POST["param2"])
это:
echo json_encode($_POST["param2"]->key1),
и потом JSON возвращает null.
В чем может быть ошибка? В обратном слэше? Пытался убрать их из JSON-строки с помощью JSON_UNESCAPED_SLASHES, но тогда вообще ничего не возвращается.
там явно не скобках проблема... data не нужно форматировать в JSON-строку, $.ajax() сделает это сам, так же, как и респонс не нужно форматировать в объект
object1={"key1":"123"};
$.ajax({
url:'ajax.php',
type:"POST",
dataType:"json",
data:{
param2:object1
},
success:function(response){
console.log(response);
console.log(response.key1);
}
});
но скорей всего проблема в PHP. $_POST - массив, в этом случае, многомерный, и чтоб получить доступ к определенному ключу, нужно
if(isset($_POST['param2'])){
if(isset($_POST['param2']['key1'])){
echo json_encode(array('key1'=>$_POST['param2']['key1']));
}else{
echo json_encode(array('key1'=>$_POST['param2']));
}
}
сделать это так