首页 > 解决方案 > 在从laravel ajax返回的json中的每个斜杠中获取额外的反斜杠“\”

问题描述

我正在尝试对我的 laravel 应用程序使用 ajax 调用,但我得到了一个额外的斜杠,甚至是它的反斜杠或正斜杠。谁能告诉我为什么会发生这种情况以及解决方案是什么导致它连续浪费了我三个 3 小时。这是我的ajax。

$(document).ready(function(){

            $('#status').change(function() {

           var status=$('#status').val()
           alert(status);
                $.ajax({
                type:'GET',
                url:'{{route('prescription_status')}}',
                data:{status:status},
                datatype:"json",
                success:function(data){
                        alert(data);
                    $('.filebody').html(data);
                }
            });
        });
        });

这是我的控制器。

public function getStatus(Request $request)
    {

        $files  = Fileupload::where('status',$request->status)->get();
        $users=User::all();
        $output='';
        foreach($files as $file) {
            $output .= '<tr>';
            foreach ($users as $user) {
                if ($user->id == $file->patient_id) {
                    $output .= "<td >" . $user->first_name . " " . $user->last_name."</td>" ;
                }
            }
            foreach ($users as $user) {
                if ($user->id == $file->user_id) {
                    $output .= "<td >" .$user->first_name . "" . $user->last_name."</td>" ;
                }
              }
            $output.="<td>".$file->filename."</td> <td>".$file->status."</td><td><a href='".route('download-file',[$file->id])."'>Download</a></td>";

            $output .="</tr>";
        }


//        $data=array(['output'=>$output]);
        echo json_encode($output) ;
    }

我得到的输出。

<tr><td >Ali Test<\/td><td >HuzailJamil<\/td><td>353fc620-742f-11ea-a199-fd883b1807d3_2020-04-01 03:41:09pm.pdf<\/td> <td>processed<\/td><td><a href='https:\/\/www.medeconsult.com.au\/upload\/file\/download\/1'>Download<\/a><\/td><\/tr><tr><td >Huzail Jamil<\/td><td >HuzailJamil<\/td><td>754326f0-74e8-11ea-b110-23d0ecfe041c_2020-04-02 01:47:13pm.pdf<\/td> <td>processed<\/td><td><a href='https:\/\/www.medeconsult.com.au\/upload\/file\/download\/7'>Download<\/a><\/td><\/tr>

标签: htmljsonajaxlaravel

解决方案


发生这种情况是因为在某些情况下,未转义/可能会导致问题。

因为,在 JSON 中,"\/"并且"/"等价的,所以这不是问题。解析 JSON 时,转义字符将消失。

您的问题是您的 JavaScript 试图将 JSON 视为 HTML 而不是将其解析为 JSON

有两个原因:

内容类型

默认情况下,PHP 声称要输出text/html,但您输出的是 JSON 并且没有更改默认值。

header("Content-Type: application/json")

覆盖

您可以通过指定dataType.

你试图这样做,但你没有使用大写字母 T。JavaScript 区分大小写。


推荐阅读