Передача JSON-объекта из Jquery в PHP

93
04 сентября 2021, 05:30

Код 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, но тогда вообще ничего не возвращается.

Answer 1

там явно не скобках проблема... 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']));
    }
}

сделать это так

READ ALSO
Как защитить запрос от изменения? [закрыт]

Как защитить запрос от изменения? [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

149
Ошибка Undefined offset: 0

Ошибка Undefined offset: 0

Делаю блог по видео урокам , но вот почему то выдает такую ошибкуНе могу решить, помогите, пожалуйста

261
Как менять контент своего шаблона WordPress

Как менять контент своего шаблона WordPress

Я учусь натягивать свой HTML шаблон на WordPress, я уже научился делать меню про помощи wp_nav_menu();

163