将包含一些 JSON 字符串的数组从 PHP 发送到 AJAX 时出现问题

Problem sending an array containing some JSON string to AJAX from PHP

我正在处理一种表单,使用 AJAX 将值从前端传递到后端。从前端,除了在后端执行一些逻辑之后,我需要将数据传输到前端之外,所有数据都可以正常传递。数据包含在 2 个单独的变量中,我已将每个变量转换为 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>

我不会将它们转换为 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 以提取回复的相关部分。

更新:

我不是Laravel人,不过你好像可以用...

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