Heim  >  Artikel  >  Backend-Entwicklung  >  javascript - ajax返回值问题

javascript - ajax返回值问题

WBOY
WBOYOriginal
2016-09-28 08:54:09836Durchsuche

ajax请求代码如下:
javascript - ajax返回值问题
php处理部分:

javascript - ajax返回值问题
火狐firebug :

javascript - ajax返回值问题
打印不出来怎么回事???

回复内容:

ajax请求代码如下:
javascript - ajax返回值问题
php处理部分:

javascript - ajax返回值问题
火狐firebug :

javascript - ajax返回值问题
打印不出来怎么回事???

我比较喜欢直接用 $.post(settings)(其实更喜欢直接 $.ajax(url, settings)),这样参数比较清楚。回调通过 $.post() 或者 $.ajax() 返回的 promise 的 done() 来设置,这样结构比较清楚

<code class="javascript">$.post({
    url: theurl,
    dataType: "json",
    data: {
        tablename: _tbname
    }
}).done(function(jo) {
    // jo 是 javascript object
    // 从后端返回的 JSON 解析而来
    console.log(jo);
});</code>

用你的那种方式,也可以直接在 callback 后面加个参数 "json" 来表示数据类型

<code>$.post("http://url/", { tablename: _tbname}, function(data) {}, "json");</code>

json_encode($data,JSON_UNESCAPED_UNICODE)

竟然也没报错, 你重启firefox看看吧
PS: 设置响应头 @header("Content-Type:application/json;charset=utf8");
就可以省略 var json = eval(data); 这步了
而且, 用eval不安全, 建议用

<code>var json = jQuery.parseJSON(data);</code>

换chrome(我是真心不习惯火狐的调试,你习惯那就算了),打断点调试,多半是没有进入方法。好久没用过火狐了,依稀记得以前好像也有过类似的问题,这个在chrome下应该是会报错的,在火狐下不报错。你先打断点看看吧,如果没进入方法就换chrome试试。

默认返回的data是字符串,而不是一个json对象,解决方式一,请求参数中指定返回类型为json,jquery内部会解析成对象;解决方式二,自己讲json字符串反序列化成对象。例如:http://blog.163.com/m13864039...

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn