[{"Bna":"twr34ar","Zti":"1","Bdata":"2018-10-01"},{"Bna":"vg34qb","Zti":"2","Bdata":"2018-10-08"}]
php+ajax
php返回时用json_encode($rows)。
$.ajax({
type: "post",
url: "XX.php",
data: {"vali":1},
success: function (msg) {
alert(msg);
}
});
上面的两行就是返回的msg
我想解析它们,添加到html里显示。
alert(obj[0].name) 这样不行。等等。
百度了些方法,都不好用。
有什么办法?
谢谢
typeof(msg)显示是string
我用
var obj = eval('(' + str + ')');
或者
var obj = str.parseJSON(); //由JSON字符串转换为JSON对象
或者
var obj = JSON.parse(str); //由JSON字符串转换为JSON对象
都不好使,什么显示都没了。。
ajax 请求的时候添加一个返回值类型:
dataType:"JSON",
typeof(msg)显示是string
加了dataType:"JSON",之后什么显示都没了。alert也不显示任何东西
@还没有: 那可能是走error 了,你访问跨域没有?
@面具灬:
error: function(err) {
alert(typeof(err));
alert(err.responseText);
alert(err.responseText[0]);
}
我在$.ajax又加了个error:
发现数据返回到这里来了。
alert(typeof(err)); 类型是object object
alert(err.responseText);类型是string,但数据是正确的
alert(err.responseText[0]);只显示一个 [
怎么能success中返回呢?
而且还是取不到数据啊。
@还没有: https://www.cnblogs.com/calamus/p/5794700.html 参考一下这篇文章,看下是不是哪里写错了
@面具灬:
是数据类型不对。php的json_encode($rows)和ajaxr 的datatype:json结果好像不一样
我也看不到php传过来的是什么结构。
可以推荐调试工具吗,
我用的 是phpstorm。
@还没有: 呃呃,我没写过php,我写java和c#的
你先用typeof 看下msg类型,如果是字符串就先解析为对象类型。如果是对象类型就可以直接使用。
使用json_encode($rows)返回值应该是json数据,在ajax中设置响应数据类型为json,然后采用(.)点的方法获取所需的数据
前端的调试, 要学一下用 代码审查(按一下F12键打开), 在里面的网络中, 可以查看页面与后台的数据交互.
另外, 别只是用alert进行调试输出, 还有 console.log(object) 这类, 不过这个需要结合前端的代码调试审查功能
代码审查 这个功能每个浏览器的名称不一样的, 但都是按F12键打开, 了解一下
你看看php用exit返回,效果是不一样的