在从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 消息