Php JSON编码将换行符添加为第一个字符
此php:Php JSON编码将换行符添加为第一个字符,php,jquery,json,Php,Jquery,Json,此php: $token = NoCSRF::generate( 'csrf_token' ); $status = "succeed"; $message = "Update done!"; $return = array($status,$message,$token); //header('Content-type: application/json'); echo json_encode($return); 返回 "↵["succeed","Update done!","MTQ0NDc
$token = NoCSRF::generate( 'csrf_token' );
$status = "succeed";
$message = "Update done!";
$return = array($status,$message,$token);
//header('Content-type: application/json');
echo json_encode($return);
返回
"↵["succeed","Update done!","MTQ0NDcxNzM3Nm9nUTRCVzRKOXc5RXFocUZodXh5eXo4Tm5waTlzZ05a"]"
到js无法处理的浏览器
如果我在php中取消注释标题行,它将返回
["succeed", "Update done!", "MTQ0NDcxNzIyNnAwY01LMVZHdXV6TE1ZT3FZZHhpd2JZcnM0RTl0Rm81"]
工作正常
知道这是怎么回事吗?我不能只保留标题行不注释,因为此解决方案在实时托管站点上不起作用,尽管它与上面的开发站点一样…这与以下事实有关:默认情况下,json是通过
文本/html
发送的。当使用内容类型:application/json
时,浏览器接受可以在javascript中操作的json编码数据
更多信息可在此查看。@Josh的beforeSend代码为我整理了以下内容:
var jsonMimeType = "application/json;charset=UTF-8";
$.ajax({
type: "GET",
url: myURL,
beforeSend: function(x) {
if(x && x.overrideMimeType) {
x.overrideMimeType(jsonMimeType);
}
},
dataType: "json",
success: function(data){
// do stuff...
}
});
我会查看web服务器软件本身以及安装在web服务器前面的任何设备。在回显内容之前,您可以尝试
trim
<代码>回声修剪(json_编码($return))代码>@RamRaider尝试了ltrim;如果我在php中检查json\u encode($return)
的值,它看起来很好,ltrim对它没有明显的影响,但是当我在js中查看变量时,它在开始时仍然有换行符:(确保没有任何内容(例如BOM签名)在打开@RamRaider之前,我只看到使用jquery处理AJAX发送和返回的问题。因此,当我这样做时,我遇到了问题:$.AJAX({type:“POST”,url:url,data:$(“#find”).serialize(),//序列化表单的元素。成功:函数(response){
但是当我这样做的时候,它很好:XHR.addEventListener(“加载”,函数(事件){if(XHR.readyState==4&&XHR.status==200){var response=JSON.parse(XHR.responseText);
在我的实时实现中,我已经准备好了内容类型:application/json
,但我仍然看到了问题所在