在从laravel ajax返回的json中的每个斜杠中获取额外的反斜杠“\”

Posted

技术标签:

【中文标题】在从laravel ajax返回的json中的每个斜杠中获取额外的反斜杠“\\”【英文标题】:Getting extra backslash "\" in every slash in json return from laravel ajax在从laravel ajax返回的json中的每个斜杠中获取额外的反斜杠“\” 【发布时间】:2020-07-15 09:36:14 【问题描述】:

我正在尝试对我的 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>

【问题讨论】:

【参考方案1】:

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

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

您的问题是您的 javascript 试图将 JSON 视为 HTML 并且 不将其解析为 JSON

这有两个原因:

内容类型

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

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

覆盖

您可以通过指定 dataType 来覆盖客户端的 Content-Type。

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

【讨论】:

以上是关于在从laravel ajax返回的json中的每个斜杠中获取额外的反斜杠“\”的主要内容,如果未能解决你的问题,请参考以下文章

尽管 Laravel 中的令牌正确,Ajax 调用仍返回 419 错误

Laravel 4 如何使用 ajax 和 json 返回多个视图数据?

Laravel 路由上的 Ajax 调用,返回一个包含 ChartJS 标签日期的 json 编码数组

如果 $request->ajax() 在 Laravel 中捕获重定向并返回 json 消息

Laravel:如何查询包含json数据的表中的列并仅返回查询匹配的对象

laravel后台返回ajax数据