JQuery中使用Ajax赋值给全局变量失败异常的解决方法,jqueryajax
我们在用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 在回调函数内 给变量赋值,为何返回不出去?那要怎处理
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参数要求等,以确保一定能输出值。
相关推荐
TONIYH 2020-07-22
83510998 2020-07-18
wcqwcq 2020-06-26
delmarks 2020-06-14
ppsurcao 2020-06-14
tthappyer 2020-06-07
kentrl 2020-11-10
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo
ajaxyan 2020-11-09
zndy0 2020-11-03
学留痕 2020-09-20
Richardxx 2020-11-09
learningever 2020-09-19
chongxiaocheng 2020-08-16
ajaxhe 2020-08-16
lyqdanang 2020-08-16
curiousL 2020-08-03