关于jquery ajax中传值问题

提问者:请叫我小妮子 提问时间:2015年01月10日 人气:57
用户提问
具体代码如下:
$.ajax({
type: "POST",
url:url,
data:$('#'+formId).serialize(),
async: false,
beforeSend:ajaxLoading,
error: function(request) {
$.messager.alert('错误提示','连接超时,稍后请重试!','error');
},
success: function(detail) {
$.ajax({
type: "POST",
url:treeUrl,
data: {"pid":pid,"id":id},
error: function(request) {
$.messager.alert('错误提示','连接超时,稍后请重试!','error');
},
success: function(data) {
$.messager.alert('信息','操作成功!','info');
}
});
},
complete: function(request){
ajaxLoadEnd();
}
});
我在一个点击事件中调用ajax访问action,如果返回success则再次调用另一个ajax,第一次调用完全正确,但在调用第二个ajax时data中参数并未传到后台action中,在此js中运行时pid和id在debug时是有值的,但在action中接收到的都是null,action中get|set方法都有,请教下大神这是什么原因如何解决,谢谢!
推荐答案
因为在ajax success后,里面定义的data 不是全局变量的话 就会取不到值的,还有没看到您定义ajax的格式是json 是html 还是text呢? 看到您用这个$('#'+formId).serialize() POST表单,提醒下,您的表单数据要是小于2k可以这样,要是大了就是提交...
辅助答案
用户:袜子睡着了
2015年01月31日

因为在ajax success后,里面定义的data 不是全局变量的话 就会取不到值的,还有没看到您定义ajax的格式是json 是html 还是text呢?


看到您用这个$('#'+formId).serialize()  POST表单,提醒下,您的表单数据要是小于2k可以这样,要是大了就是提交不了的。还得改为data:{}这样的来提交。

function act(){
var pid="xxx";
var id="xxx";
var formId="xxx";
var url="xxx";
var treeUrl="xxx";
$.ajax({
  type: "POST",
  url:url,
  data:$('#'+formId).serialize(),
  beforeSend:ajaxLoading,
  dataType:"text",
  error:function(request){
  $.messager.alert('错误提示','连接超时,稍后请重试!','error');
  },
  success:function(data){
  ajs(treeUrl,pid,id);
  },
  complete: function(request){
      ajaxLoadEnd();
  }
});
}

function ajs(treeUrl,pid,id){
   $.ajax({
        type: "POST",
        url:treeUrl,
        data: {"pid":pid,"id":id},
        dataType:"text",
        error: function(request) {
                $.messager.alert('错误提示','连接超时,稍后请重试!','error');
        },
        success: function(data) {
        $.messager.alert('信息','操作成功!','info');
        }
        });
}
用户:lost_child_yo
2015年01月28日
这个问题问的好
用户:Butinc
2015年01月16日
这个哥不会做