Получение дополнительного backsla sh "\" в каждом sla sh in json возврате из laravel ajax - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь использовать ajax call для моего приложения laravel, но я получаю одну дополнительную sla sh даже ее обратную sla sh или forward sla sh. Может ли кто-нибудь сказать мне, почему это происходит, и какое решение является причиной его траты моих три 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 Ответ

1 голос
/ 03 апреля 2020

Это происходит потому, что в некоторых контекстах неэкранированный / может вызвать проблемы.

Так как в JSON, "\/" и "/" эквивалентны , это не проблема Экранирующий символ удалится go при разборе JSON.

Ваша проблема в том, что ваш JavaScript пытается обработать JSON как HTML и , не анализируя его как JSON.

Для этого есть две причины:

Content-Type

По умолчанию PHP претендует на вывод text/html, но вы вывел JSON и не изменил значение по умолчанию.

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

Переопределяет

Вы можете переопределить Content-Type из клиента, указав dataType.

Вы пытались это сделать, но вам не удалось использовать заглавную T. JavaScript чувствителен к регистру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...