怎么才能把Ajax返回值作为JS的返回值传出去

mady55 2008-05-22 09:08:57
写了一个JS函数

// JScript 文件
var OA;
if(!OA) OA = {};
OA.Product = function()
{
this.model = null;
this.models = null;
}

OA.Product.prototype.GetModelByPdtIDS = function(pdtids)
{
debugger;
var models = null;
var NoAjax = new Ajax.Request(
'../../ajax/Product.aspx',
{
method:'get',
parameters:'Type=GetModelByPdtIDS&IDS=' + pdtids+ "&Date=" + new Date(),
onSuccess:function(originalRequest)
{
models = originalRequest.responseText.evalJSON();
}}
);
return models
}



调用时的代码如下

var product = new OA.Product();
var models = product.GetModelByPdtIDS($(userno).value);


采用的是prototype 框架,但调用时读出的models总为null 值,怎么才能把Ajax返回值作为JS的返回值传出去,我这样写返回值总为 null 据我分析,Ajax还没有返回东西来这个函数就执行完了,所以返回值一直为空,有没有解决办法?
...全文
1367 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
仁者天下 2012-01-16
  • 打赏
  • 举报
回复
默认使用ajax时,async选项为true,也就是异部请求,这种情况下,异步请求不能将返回值传给全局变量
将async设为同步请求,就可以了,也就是async=false;

mady55 2008-05-23
  • 打赏
  • 举报
回复
没有人有解决这个问题吗?
地下室小红叔 2008-05-22
  • 打赏
  • 举报
回复
这个资料不错 很全 可能对你有帮助
https://compdoc2cn.dev.java.net/prototype/html/prototype.js.cn.html#options_reference
地下室小红叔 2008-05-22
  • 打赏
  • 举报
回复
不太熟悉protype 刚看了一些资料 建议首先应按规范模式写 不是说你的写法一定不对
OA.Product.prototype.GetModelByPdtIDS = function(pdtids)
{
debugger;
var models = null;
var NoAjax = new Ajax.Request(
'../../ajax/Product.aspx',
{
method:'get',
parameters:'Type=GetModelByPdtIDS&IDS=' + pdtids+ "&Date=" + new Date(),
onSuccess:getModels,onFailure:showErr}
);
function getModels(originalRequest)
{
models = originalRequest.responseText.evalJSON();
}
function showErr(originalRequest)
{
models =originalRequest.responseText.evalJSON();
}
return models;
}


至少应该加了判断出错的方法吧 也可能你处理ajax请求的部分有问题
mady55 2008-05-22
  • 打赏
  • 举报
回复
return originalRequest.responseText.evalJSON();

说过了,不管用

GengWH 2008-05-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sq_zhuyi 的回复:]
return originalRequest.responseText.evalJSON();
[/Quote]
mady55 2008-05-22
  • 打赏
  • 举报
回复
Up
在线等
mady55 2008-05-22
  • 打赏
  • 举报
回复
不能这样操作:return originalRequest.responseText.evalJSON();
originalRequest
'originalRequest' 未定义
mady55 2008-05-22
  • 打赏
  • 举报
回复
1.用的是prototype框架
2.return models 后没加";" 加上也不管用.
3.另外 var models = product.GetModelByPdtIDS($(userno).value) 这句在什么状态下执行的?
上面的代码是一个JS类,下面的代码是在前台按钮触发的JS事件中执行

我想把Ajax 返回值作为上面OA.Product.prototype.GetModelByPdtIDS = function(pdtids) 函数的一个返回值传出去,该如何操作
路人乙e 2008-05-22
  • 打赏
  • 举报
回复
return originalRequest.responseText.evalJSON();
地下室小红叔 2008-05-22
  • 打赏
  • 举报
回复
我看到了语法问题
return models 后没加";"
另外 var models = product.GetModelByPdtIDS($(userno).value) 这句在什么状态下执行的?
直接用ajax方式请求 有状态判断 可行不
chinahnzl 2008-05-22
  • 打赏
  • 举报
回复
用的jQuery吧。。

不用jQuery
mady55 2008-05-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 WO_YOU_XIE_SHANG_XIN 的回复:]
不太熟悉protype 刚看了一些资料 建议首先应按规范模式写 不是说你的写法一定不对
JScript codeOA.Product.prototype.GetModelByPdtIDS=function(pdtids)
{debugger;varmodels=null;varNoAjax=newAjax.Request('../../ajax/Product.aspx',
{
method:'get',
parameters:'Type=GetModelByPdtIDS&IDS='+pdtids+"&Date="+newDate(),
onSuccess:getModels,onFailure:showErr}
);functiongetModels(o…
[/Quote]

还是解决不了,格式应该没有问题

87,907

社区成员

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

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