JQuery: 使用Ajax赋值给全局变量失败异常的解决方法,ajaxSetup, jquery ajax global

我们在用JQuery的Ajax从后台提取数据后想把它赋值给全局变量,但是却怎么都赋不进,为什么呢?

原因其实很简单,我们用的Ajax是异步操作,也就是说在你赋值的时候数据还没提取出来,你当然赋不进去,所以只要改成同步操作就行~

方法1:先设置同步在进行Ajax操作

//在全局或某个需要的函数内设置Ajax异步为false,也就是同步
$.ajaxSetup({ 
async :false});

//然后再进行你的Ajax操作
$.post(地址,参数,function(data, status){if(status =="success"){//赋值给全局变量}else{ 
alert("wrong");}});

方法2:直接用$.ajax

$.ajax({ 
type :"post", 
url :地址, 
data :"参数"+参数的值, 
async :false, 
success :function(data){//赋值给全局变量;}});

实例代码:

JQuery中使用Ajax赋值给全局变量失败异常的解决方法,jqueryajax
JQuery中使用Ajax赋值给全局变量失败异常的解决方法,jqueryajax

 

jquery ajax 在回调函数内 给变量赋值,为何返回不出去?那要怎处理

1 全局变量的作用域是全局性的,即在整个JavaScript程序中,全局变量处处都在。
2 而在函数内部声明的变量,只在函数内部起作用。这些变量是局部变量,作用域是局部性的;函数的参数也是局部性的,只在函数内部起作用。

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

你这个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参数要求等,以确保一定能输出值。

原文:http://www.bkjia.com/Javascript/865631.html

更多参考:

不刷新改变URL: pushState + Ajax

Comet 反Ajax: 基于jQuery与PHP实现Ajax长轮询(LongPoll)

jQuery本身方法($.each,$.map,$.contains,$ajax)

使用HTML5 FormData轻松完成Ajax表单提交

本文: JQuery: 使用Ajax赋值给全局变量失败异常的解决方法,ajaxSetup, jquery ajax global

Leave a Reply