Проблема при отправке массива, содержащего некоторую строку JSON в AJAX из PHP - PullRequest
0 голосов
/ 06 ноября 2018

Я работаю над формой, посредством которой передаю значения из внешнего интерфейса в внутренний с помощью AJAX. Из внешнего интерфейса все данные передаются нормально, за исключением того, что после выполнения некоторой логики на внутреннем интерфейсе мне необходимо перенести данные в внешний интерфейс. Данные содержатся в двух отдельных переменных, в результате чего я преобразовал каждую в объект JSON для передачи. Когда я dd () данных в бэкэнде, я получаю их в виде строки.

Проблема в том, что когда я регистрирую ответ на вкладке консоли (из кода AJAX), я не получаю никакого ответа от бэкэнда .. Пожалуйста, помогите?

Файл контроллера, содержащий код PHP

public
    function validatePlanEntries(Request $request)
    {   
        //dd($request->all());

        //Other PHP logic

        //Convert data to JSON format
        $form = json_encode($oldata);

        //dd($form);

        $planJson = json_encode($plans_benefits);

        $plans = compact(['planJson' , 'form']);
        //dd($plans);
        return $plans;
    }

AJAX-код, получающий ответ от контроллера выше

 <script>
        //Other Js code

       form.parsley().validate();

      //Returns true if Parsley validation has no errors
      if (form.parsley().isValid()){
        $.ajax({
            type: "POST",
            url: "getplans",
            data:JSON.stringify(type),
            contentType: 'application/json',
            dataType: "json",
            success: function(response){
                console.log(response);
            },
            failure: function(errMsg) {
                 alert(errMsg);
            }
        });
      };
</script>

1 Ответ

0 голосов
/ 06 ноября 2018

Я бы не конвертировал их в 2 отдельных значения в кодировке JSON, а вместо этого добавил бы их в 1. Итак, вместо ...

//Convert data to JSON format
$form = json_encode($oldata);

//dd($form);

$planJson = json_encode($plans_benefits);

$plans = compact(['planJson' , 'form']);
//dd($plans);
return $plans;

Что-то вроде, создайте массив с обоими частями данных и json_encode() результат ...

return json_encode([ "form" => $oldata, "plan" => $plans_benefits]);

Вам потребуется обновить Javascript, чтобы извлечь соответствующие части ответа.

Обновление:

Я не человек Ларавела, но, кажется, вы можете использовать ...

return \Response::json([ "form" => $oldata, "plan" => $plans_benefits]);
...