Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php JSON编码将换行符添加为第一个字符_Php_Jquery_Json - Fatal编程技术网

Php JSON编码将换行符添加为第一个字符

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

此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!","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
,但我仍然看到了问题所在