如何设置ajax.post() 方法同步提交?我这么写错在哪里了?求大神指教。
function Check(year,areaId,subjectId) { $.ajaxSetup({ async: false }); $.post("/Search/SearchAdd", { year: year, areaId: areaId, subjectId: subjectId }, function (data) { return data.Result;//data.Result bool型 }, "Json"); }
需求大概是这样的,同一年份、地区、专业的信息只能有一条,所以往数据库里添加数据的时候就需要进行验证,我目前的做法是选择完年份、地区和专业后进行异步请求去验证一下,根据返回值进行判断,如果已存在,则弹出一个confirm框提示去修改,如果不存在则让他直接添加,点击添加的时候同样需要验证唯一性。
自己在本地测试了很久,我感觉应该是这样的,$.ajaxSetup函数所设置的默认值不会应用到load()命令上。对于实用工具函数,如$.get()和$.post(),其HTTP方法不会因为使用这些默认值而被覆盖。当然,对于$.ajax()方法是有效的,不然这个函数就没有存在的必要了,但是一般不推荐这么使用。谢谢大家的回答了。
想要同步,还是用$.ajax或者表单提交吧。
post默认就是异步的
嗯,前两天查资料的时候看到的,说可以通过这个 $.ajaxSetup({ async: false }); 设置post请求为同步。所以来此问一问。
@晓菜鸟:
那个是设置ajax的全局值,你这样设置后,同一个页面下,如果再要使用$.post、$.ajax、$.get、$.getJSON时,就会默认是同步请求。所以在页面上有多个异步请求时,最好还是不用这种方式。
@螺 丝 钉: 同一个页面下,如果再要使用$.post、$.ajax、$.get、$.getJSON时,就会默认是同步请求。
如果结果真是你说的那样的话,我当前这个post请求应该是同步的,但是测试发现他还是异步的。
@晓菜鸟:
你在页面初始化时就使用。
$(function(){
$.ajaxSetup();
});
@螺 丝 钉: 额,页面初始化时设置$.ajaxSetup({ async: false });也不管用,照样还是异步请求。
@晓菜鸟:
参考文档中说是可以的,没有测试过,真的不行就算了。
@螺 丝 钉:
难道这个设置是这设置$.ajax的默认选项?
@晓菜鸟:
你测试一下,$.ajaxSetup是不是只对$.ajax有效
@螺 丝 钉: 跑了两遍,ajax方法有效。
$.ajax可以同步传值的
谢谢回答,目前基本实现了。