如何取得ajax返回值中的responseText?

a16696945 2012-02-21 02:29:07
先贴代码:


findAll: function(){
var a = $.ajax({
url: './accounts2.json',
type: 'get',
dataType: 'json account.models',
contentType: 'application/json',
success: function(json){
//return eval(json);
},
error: function(){
;
}});
alert((eval(a).responseText);
return eval(a);
}


问题:
1. alert提示undefined, 但alert((eval(a).readyState)没有问题。该如何取得responseText的值?
2. 如果我在success里直接return,为什么在调用findAll方法的时候获取不了数据?
3. 参照下面的accounts2.json给出的数据,我希望findAll最终返回的数据是不要前面的accounts和values的“[{"name": "a","id": "1","role": "user","tenant": "t"},{"name": "b","id": "2","role": "user","tenant": "tt"}]')}”该如何实现?

问题比较弱,谢谢大家的耐心!

accounts2.json 里的数据是:
{accounts:{values:[{"name": "a","id": "1","role": "user","tenant": "t"},{"name": "b","id": "2","role": "user","tenant": "tt"}]')}}
...全文
10814 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
峭沙 2012-02-29
  • 打赏
  • 举报
回复
ajax是异步的,也就是说,当findAll执行结束后,respone是不是已经返回了还是个未知数,你怎么取值?最好的办法是利用回调函数
		findAll:  function(callback){
var a = $.ajax({
url: './accounts2.json',
type: 'get',
dataType: 'json account.models',
contentType: 'application/json',
success: callback,
error: function(){
;
}
});
}

function ajaxResponeHandle(responeText){
alert(responeText);
}

findAll(ajaxResponeHandle);
a16696945 2012-02-29
  • 打赏
  • 举报
回复
还是不懂该怎么获取,
findAll().success? 返回的是一堆代码
aihua17 2012-02-22
  • 打赏
  • 举报
回复
+++1
[Quote=引用 7 楼 wzs_xyz 的回复:]

jquery的把js的xmlhttprequest处理了的,直接把response.responseText返回给你传递的方法,就是success函数。所以success方法并不真正是Ajax的回调函数,只是在回调函数中调用此函数而已,所以success方法里面没有response这个参数

findAll: function(){
var a = $.ajax({
……
[/Quote]
未知数 2012-02-22
  • 打赏
  • 举报
回复
jquery的把js的xmlhttprequest处理了的,直接把response.responseText返回给你传递的方法,就是success函数。所以success方法并不真正是Ajax的回调函数,只是在回调函数中调用此函数而已,所以success方法里面没有response这个参数

findAll: function(){
var a = $.ajax({
url: './accounts2.json',
type: 'get',
dataType: 'json account.models',
contentType: 'application/json',
success: function(json){//ajax函数向此函数传递一个参数就是服务器返回的字符串,参数名称不重要,你觉得responseText比较习惯把参数名称改成那样也行
//return eval(json);
alert(json);//这儿的json就是返回的字符串
},
error: function(){
;
}});
//alert((eval(a).responseText);//这个写法是错的,ajax返回的字符串应该在success方法中获取,不是变量
//return eval(a);
}



a16696945 2012-02-22
  • 打赏
  • 举报
回复
啊 不好意思 贴错了 实际上没有那个‘)的

其实我的问题是 我可以取到readyStata的值 但不能取得responseText 这个就比较奇怪了
是不是responseText不能用response.responseText这样的形式取呀?
hellNo 2012-02-21
  • 打赏
  • 举报
回复

alert((eval(a).responseText); //这个a是什么玩意??哪来的?
hellNo 2012-02-21
  • 打赏
  • 举报
回复
首先你先确认楼上说的JSON的格式正确不正确,在确保正确JSO格式正确无误的情况下这样取值

findAll: function(){
var a = $.ajax({
url: './accounts2.json',
type: 'get',
dataType: 'json account.models',
contentType: 'application/json',
success: function(json){
var JSON = window["eval"]("(" + json.d + ")"); //这样取值
},
error: function(){
;
}});
alert((eval(a).responseText);
return eval(a);
}
寒似火 2012-02-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acesidonu 的回复:]

{accounts:{values:[{"name": "a","id": "1","role": "user","tenant": "t"},{"name": "b","id": "2","role": "user","tenant": "tt"}]}}
返回的json格式有错,最后多了 ')
[/Quote]
+++
色拉油 2012-02-21
  • 打赏
  • 举报
回复
还真是。。。。[Quote=引用 1 楼 acesidonu 的回复:]

{accounts:{values:[{"name": "a","id": "1","role": "user","tenant": "t"},{"name": "b","id": "2","role": "user","tenant": "tt"}]}}
返回的json格式有错,最后多了 ')
[/Quote]
Acesidonu 2012-02-21
  • 打赏
  • 举报
回复
{accounts:{values:[{"name": "a","id": "1","role": "user","tenant": "t"},{"name": "b","id": "2","role": "user","tenant": "tt"}]}}
返回的json格式有错,最后多了 ')

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧