thinkphp ajax路径问题,thinkphp框架ajax返回问题 | 严佳冬

前天发布了自己写的博客系统YBlog的第一个版本,后台在上传图片的时候并没有使用Ajax请求,在更新下一个版本的时候打算使用上传ajax请求,但是thinkphp框架自带的ajaxReturn方法返回的并不是我所需要的json对象,看下图:

65200985eab26674df5c2b344af00dba.png

视图中的代码是这样的:

$("#upload").ajaxfileupload({

'action': '__CONTROLLER__/uploadAjax',

'params': {

'extra': 'info'

},

'onComplete': function(data) {

alert(data);

if (data.success == 1) {

$('#uploadPath').val(data.path);

$('#showPic').attr('src', data.url).show();

} else {

}

$("#loading").hide();

},

'onStart': function() {

$("#loading").show();

$("#showPic").hide();

},

'onCancel': function() {

}

});

于是各种不解,查看了tp框架的ajaxReturn方法源码,终于找到了原因。

protected function ajaxReturn($data,$type='',$json_option=0) {

if(empty($type)) $type  =   C('DEFAULT_AJAX_RETURN');

switch (strtoupper($type)){

case 'JSON' :

// 返回JSON数据格式到客户端 包含状态信息

header('Content-Type:application/json; charset=utf-8');

exit(json_encode($data,$json_option));

case 'XML'  :

// 返回xml格式数据

header('Content-Type:text/xml; charset=utf-8');

exit(xml_encode($data));

case 'JSONP':

// 返回JSON数据格式到客户端 包含状态信息

header('Content-Type:application/json; charset=utf-8');

$handler  =   isset($_GET[C('VAR_JSONP_HANDLER')]) ? $_GET[C('VAR_JSONP_HANDLER')] : C('DEFAULT_JSONP_HANDLER');

exit($handler.'('.json_encode($data,$json_option).');');

case 'EVAL' :

// 返回可执行的js脚本

header('Content-Type:text/html; charset=utf-8');

exit($data);

default     :

// 用于扩展其他返回格式数据

Hook::listen('ajax_return',$data);

}

}

是由于这一句造成的: header('Content-Type:application/json; charset=utf-8');

于是我把这句改为:header('Content-Type:text/html; charset=utf-8');

终于把问题解决了。

如下图返回就是正确的

thinkphp ajax路径问题,thinkphp框架ajax返回问题 | 严佳冬_第1张图片

你可能感兴趣的:(thinkphp,ajax路径问题)