问题描述
AJAX从后台读取数据返回到前台的问题必须先alert一下,才能获取数据,求帮忙!!问题描述:点击单据号,将单据号通过url,传递至详细信息展示页detail.html,detail.html页面通过这个单据号在后台数据库中查出相关数据,然后展示在页面上,但是在js代码中必须先alert一下,才能将获取的数据显示在页面中,请教各位大牛,怎么解决我猜应该是detail.html获取URL数据,然后到后台去解析,导致不同步了,但是想不到解决办法,求个问大牛帮忙!!获取URL代码:<scripttype="text/javascript">functionGetRequest(){varurl=location.search;//获取url中"?"符后的字串vartheRequest=newObject();if(url.indexOf("?")!=-1){varstr=url.substr(1);strs=str.split("&");for(vari=0;i<strs.length;i++){theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);}}returntheRequest;}</script>**********************************************向后台传输代码和返回代码<scripttype="text/javascript">$(function(){varRequest=newObject();Request=GetRequest();varurl;url=Request['vbillcode'];$.ajax({type:'POST',url:"/rm/rmcsale/edit_specapplydetail",data:{Listurl:url},async:false,success:function(data){console.log("-----------success-------------");alert("您查询的订单号为:"+data.vbillcode);$(".J-vbillcode").attr("value",data.vbillcode);$(".J-billmaker").attr("value",data.billmaker);$(".J-ctrantypeid").attr("value",data.ctrantypeid);},error:function(data){},dataType:'json',});});</script>
多谢!!
解决方案
解决方案二:
alert();就会打断程序了,你要么自己实现个弹出框,要么使用confirm。
解决方案三:
//console.log("-----------success-------------");//alert("您查询的订单号为:"+data.vbillcode);注释掉这两行,再试
解决方案四:
你都指定ajax同步了应该不存在你说的问题你说的问题一般出现在异步里比较多
解决方案五:
引用1楼huasuoworld的回复:
alert();就会打断程序了,你要么自己实现个弹出框,要么使用confirm。
不是,如果不使用alert数据就不显示,但是用alert或者对话框用户体验会不好,有什么解决办法没
解决方案六:
引用4楼skyxuyan的回复:
Quote: 引用1楼huasuoworld的回复:
alert();就会打断程序了,你要么自己实现个弹出框,要么使用confirm。不是,如果不使用alert数据就不显示,但是用alert或者对话框用户体验会不好,有什么解决办法没
你可以在页面上放个信息提示区域,如果回来了,就显示几个字提示操作成功了,但是你的问题应该是你的操作需要一定的时间,这个时候没有alert应该是值没出来,不可能产生alert值才能出来的情况的...
解决方案七:
看你代码和加不加alert没大关系的,只是一个赋值操作而已,就算其他地方要使用这3个控件的值,你的ajax是同步的,只要是在这个方法调用之后也不会出问题。。$(".J-vbillcode").attr("value",data.vbillcode);$(".J-billmaker").attr("value",data.billmaker);$(".J-ctrantypeid").attr("value",data.ctrantypeid);改为val试试,有专门给输入控件赋值的方法,不要使用attr设置属性的方法$(".J-vbillcode").val(data.vbillcode);$(".J-billmaker").val(data.billmaker);$(".J-ctrantypeid").val(data.ctrantypeid);
而且console.log要去掉,有些浏览器是不支持console.log对象的,会报错,如ie8不打开开发工具时不支持console.log对象的
解决方案八:
alert();之后才会出现,这和异步刷新有关,可以setTimeout("function()",1000);,让程序延时执行。
解决方案九:
如果你觉得这样会显得比较慢,那么你可以把提交方式换掉$.ajax({});,改成jQuery的提交方式。
解决方案十:
多半是延时的问题吧!可是试一试楼上的
解决方案十一:
ajax里面的dataType你怎么放在最后了,你的data不是json结构,怎么会取到值呢?你试下将这个dataType放到success的前面。不确定是不是这个引起的。试下吧。
解决方案十二:
引用6楼showbo的回复:
看你代码和加不加alert没大关系的,只是一个赋值操作而已,就算其他地方要使用这3个控件的值,你的ajax是同步的,只要是在这个方法调用之后也不会出问题。。$(".J-vbillcode").attr("value",data.vbillcode);$(".J-billmaker").attr("value",data.billmaker);$(".J-ctrantypeid").attr("value",data.ctrantypeid);改为val试试,有专门给输入控件赋值的方法,不要使用attr设置属性的方法$(".J-vbillcode").val(data.vbillcode);$(".J-billmaker").val(data.billmaker);$(".J-ctrantypeid").val(data.ctrantypeid);而且console.log要去掉,有些浏览器是不支持console.log对象的,会报错,如ie8不打开开发工具时不支持console.log对象的
建议用val赋值试试。
解决方案十三:
//console.log("-----------success-------------");//alert("您查询的订单号为:"+data.vbillcode);去掉,再打个断点试试呢,如果可以的话,感觉就是延时的问题,另外$(".J-vbillcode").attr("value",data.vbillcode);$(".J-billmaker").attr("value",data.billmaker);$(".J-ctrantypeid").attr("value",data.ctrantypeid);这里面用的是class选择器,可能有多个同名的class,用id更好吧对这方面不太懂,希望有帮助
解决方案十四:
$(function(){把这个函数替换为window.onload试下呢
解决方案十五:
使用console.info()试下