如何将jqery ajax请求代码独立出来?

问题描述

jsonResult = getDepInfoJson(Department.id); //此处调用独立的 jquery post 请求function getDepInfoJson(depId){var ret;$.post(urlHead + 'getDepInfo.action', {"departmentId":depId}, function(data, status){if("success"==status){ret = data;//alert("callBack data:" + data +" ret:"+ret);}else{$.messager.alert('系统信息',"访部服务器发生错误!",'warning');}});alert("继续ret:"+ ret);return ret;} 为什么return前必须加alert(),才能返回值,且alert()时,输出为 “ret:undefined”? 问题补充:<div class="quote_title">lackhurt 写道</div><div class="quote_div">这里你用的是异步请求,在alert弹出的时候ajax请求还没有返回<br />当alert弹出后在关闭的一段时间内,ajax请求有了返回,才把ret赋值<br /><br />改为同步请求就可以了<br /><pre name="code" class="js">function getDepInfoJson(depId){ var ret; $.ajax({ url: urlHead +"getDepInfo.act", success: function (data, status){ if("success"==status){ ret = data; //alert("callBack data:" + data +" ret:"+ret); }else{ $.messager.alert('系统信息',"访部服务器发生错误!",'warning'); } }, async: false //改为同步请求 }); return ret; } </pre><br /></div><br /><br />还是不行<br />alert("callBack data:" + data +"&nbsp; ret:"+ret);&nbsp; <br />取消注释后 data ret 什么都没打出来<br />

解决方案

不好意思 忽略了参数 function getDepInfoJson(depId){ var ret; $.ajax({ type: "POST", url: urlHead +"getDepInfo.act", data: { "departmentId":depId }, success: function (data, status){ if("success"==status){ ret = data; //alert("callBack data:" + data +" ret:"+ret); }else{ $.messager.alert('系统信息',"访部服务器发生错误!",'warning'); } }, async: false //改为同步请求 }); return ret; }
解决方案二:
Ajax是异步调用的 $.post里面那个function(data, status)是独立运行的 会被调用4次而post执行完毕 function 可以看做是启用一个线程 去和服务器通信所以 会有延迟 但不影响post 以及 getDepInfoJson的执行至于你说的alert才会有结果 其实并不是而是alert阻止了 getDepInfoJson运行 从而给了 function 足够的时间运行完毕 此时刚好带回 歪打正着 正确的做法是在function 里 定义 全局的ret来做返回值
解决方案三:
这里你用的是异步请求,在alert弹出的时候ajax请求还没有返回当alert弹出后在关闭的一段时间内,ajax请求有了返回,才把ret赋值改为同步请求就可以了function getDepInfoJson(depId){ var ret; $.ajax({ url: urlHead +"getDepInfo.act", success: function (data, status){ if("success"==status){ ret = data; //alert("callBack data:" + data +" ret:"+ret); }else{ $.messager.alert('系统信息',"访部服务器发生错误!",'warning'); } }, async: false //改为同步请求 }); return ret; }

时间: 2024-07-30 09:55:52

如何将jqery ajax请求代码独立出来?的相关文章

ajax请求后台下载zip压缩文件问题,后台返回的是流前台不提示下载。附上ajax请求代码合后台代码

问题描述 ajax请求后台下载zip压缩文件问题,后台返回的是流前台不提示下载.附上ajax请求代码合后台代码 前台: $.ajax({ type:"POST", url:"app/downloadProduct", data:{nid:nid,name:name}, dataType:"text", success:function(data){ console.log(data); if(data!=null){ alert("ur

js 兼容多浏览器的Ajax请求代码示例

例  代码如下 复制代码 var ajax = function() {}; ajax.prototype = {     request: function(method, url, callback, postVars) {         var xhr = this.createXhrObject();         xhr.onreadystatechange = function() {             if (xhr.readyState !== 4) return;  

Jquery Ajax请求代码(2)_jquery

添加引用Dll文件就可以使用了,很方便的. /201101/tools/Newtonsoft.Json.Net20.rar在jquery库中,getJSON其实是调用的:Query.get(url, data, callback, "json") 其中参数也是以k/v对格式发出.请求返回的可以看到:在服务端以Customer列表集合返回 现在来看一下事列: 件一个Common类 复制代码 代码如下: public class Customer { public int Unid { g

Ajax请求内嵌套Ajax请求示例代码_AJAX相关

前段时间做项目,需要把全国省市的两个XML文件整合成一个JSON格式的数据,手写的话觉得数据太多了,而且容易出错,于是就想到了用Ajax嵌套的方法来解决,就想平时用Ajax的方法直接嵌套,都会先读出外面Ajax的内容,然后才读取嵌套在Ajax里面的内容,后面经网上查找资料,加个async:false这个Ajax参数就行了,下面是贴代码: <script type="text/javascript"> $(function () { $.ajax({ type: "

PHP中检测ajax请求的代码例子

  多数情况下,基于JavaScript 的Js框架如jquery.Mootools.Prototype等,在发出Ajax请求指令时,都会发送额外的 HTTP_X_REQUESTED_WITH 头部信息,就当是一个ajax请求,因此你可以在服务器端检测到这些Ajax请求,在PHP中的检测方法如下代码所示: 1 2if(!emptyempty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED

请求阻塞-ajax请求过多导致js代码阻塞问题,求助

问题描述 ajax请求过多导致js代码阻塞问题,求助 首先,我有这么一个需求. 需求:遍历局域网内所有IP查找服务器IP. 实现:通过for循环向每个IP发送ajax请求,前端成功接受到服务器返回的数据说明当前请求的IP为服务器IP地址. 问题:由于向局域网内所有IP都同时发送了ajax请求,一共250多次,导致js代码以及ajax请求阻塞. 有没有什么比较好的办法能够解决ajax请求不响应的问题.. 贴一下代码 for(var i = 0;i<ipUseableArray.length;i++

jquery ajax 请求一直返回当前页面HTML代码

问题描述 jquery ajax 请求一直返回当前页面HTML代码 前端JS var names =$(""#names"").val(); if(isNull(names)){ alertMsg({'msg':'请输入姓名!'}); return; } var job_number =$(""#job_number"").val(); if(isNull(job_number)){ alertMsg({'msg':'请输入工

使用$.getJSON实现跨域ajax请求示例代码_AJAX相关

jQuery中常用getJSON来调用并获取远程的JSON字符串,将其转换为JSON对象,如果成功,则执行回调函数.原型如下: jQuery.getJSON( url, [data], [callback] ) 跨域加载JSON数据. url: 发送请求的地址 data : (可选) 待发送key/value参数 callback: (可选) 载入成功时的回调函数 主要用于客户端获取服务器JSON数据.简单示例: 服务器脚本,返回JSON数据: 复制代码 代码如下: // $.getJSON.p

jQuery通过ajax请求php遍历json数组到table中的代码(推荐)_jquery

html代码(test.html),js在html底部 具体代码如下所示: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>test-jquery-ajax-list</title> </head> <body> <div class="main">