ajax的返回的数据给JS全局变量赋值的问题

其实想法很简单,大家请看下面varstr="";$(function(){$.post("xxx.ashx",{"param":"1"},function(data){s... 其实想法很简单,大家请看下面

var str="";
$(function (){
$.post("xxx.ashx",{"param":"1"},function (data){
str+=data;
});

});

//假如是一个button的点击事件
var getStr=function (){
alert(str);
//为什么还是空,怎么解决这个问题?

}
展开
 我来答
暨从垒3e
2012-08-13
知道答主
回答量:6
采纳率:0%
帮助的人:9479
展开全部
那个满意回答说了这么多,其实还是没有解决你的问题,其实你的问题的真正原因是AJAX的执行需要时间的,你把那个STR定义成全局变量试试就知道了,第一次点击时STR还是空的,因为你ALERT的时候AJAX还没执行到赋值那一步,你再次点击的话就会发现已经赋值了。
abina2020
2011-10-19 · TA获得超过139个赞
知道小有建树答主
回答量:80
采纳率:100%
帮助的人:74.7万
展开全部
你这个js是可以的,如下的测试能正确弹出"Hello World":
前端页面:
<body>
<input id="Text1" type="text" value="TestText" />
<input id="Button1" type="button" value="button" />
<script language="javascript">
$("#Text1").focus();
var str = "";
$(function ()
{
$.post("Handler1.ashx", { "flag": "test" }, function (data)
{
str = data;
});
});

$("#Button1").click(function ()
{
alert(str);
});
</script>
</body>
被请求页面Handler1.ashx.cs里:
public void ProcessRequest(HttpContext context)
{//确保只要被请求 就能输出值
context.Response.ContentType = "text/plain";
context.Response.Write("Hello World");
}
-----------------------------------
估计是你的被请求页面.ashx输不出值,检查下这个页面的代码,比如context.Request.Params参数要求等,以确保一定能输出值。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式