Ajax Post有2个url目标

时间:2012-09-30 00:29:37

标签: jquery ajax post

我试图在Jquery中用ajax将数据发送到2个不同的URL中 我可以这样想:

$.ajax({ 
type: 'POST' 
url: 'some_url1' 
data: 'some data'  
success: function(data){  
$.ajax ({  
type: 'POST'  
url: 'some_url2' 
data: 'some data' 
success: function(data){}
}) 
}  
}) 

还有其他办法吗?
thx

4 个答案:

答案 0 :(得分:5)

如果你有这样的代码:

$.ajax({ 
  type: 'POST',
  url: 'some_url1',
  data: 'some data', 
  success: function(data){  
    $.ajax ({  
      type: 'POST',
      url: 'some_url2',
      data: 'some data',
      success: function(data){}
    });
  }
});

应该跳出来的第一件事就是重复的数量。你基本上有两个非常相似的代码块。除非有一个非常好的理由为什么它应该被复制(例如,如果两个代码块对两个不同的业务所有者/角色负责并且非常可能彼此独立地改变),那么抽象将重复的代码转换为单个函数。

在这种情况下,两个重复的代码块之间只有两个不同之处:

  1. 网址
  2. 成功回调
  3. 因此,从重复代码中提取的函数应该接受这两个参数:

    var makeAjaxCall = function (url, success_callback) {
      $.ajax ({  
        type: 'POST',  
        url: url,
        data: 'some data',
        success: success_callback
      });
    };
    

    然后你的例子会调用这样的函数:

    makeAjaxCall(
      'some_url1',
      makeAjaxCall(
        'some_url2',
        function() {}
      )
    );
    

    请注意,在您的示例中,您将data参数传递给回调函数,但您没有使用它。这是一个用于问题目的的最小设计示例,实际上,您正在使用该参数吗?如果是这样,那么提取的函数也需要处理它。但是在你这样做之前,你需要更明确一些,因为你的例子在这方面令人困惑,并且可能以意想不到的(或至少不直观的)方式表现。当您的内部AJAX成功回调收到其data参数时,您是否希望它是内部AJAX调用的结果?或者您希望它是传递给包含内部AJAX调用的函数的data参数吗?目的在代码中不清楚。

答案 1 :(得分:0)

编写一个具有要在参数中发送的URL的函数,然后每次使用另一个URL调用该函数2次,而不是写入双重代码...

答案 2 :(得分:0)

看起来像是这样......

$(function() {
     // Make the first ajax call with Parameters
     ajaxCall('firsturl' , firstdata , callbackFunction1 );

});

function callbackFunction1(result) {
    // Make the econd ajax call from the callback function1
     ajaxCall('secondurl' , seconddata , callbackFunction2 ); 
};

 function callbackFunction2(result) {
    // Success call back of second ajax request     
}; 

function ajaxCall(url, usrData, callbackFunction) {
    $.ajax({
        type: 'POST'
        url: url,
        data: usrData,
        success: callbackFunction
    });
};

答案 3 :(得分:0)

function ValidateForm() {     

    //Data Post to FirstForm
    var str = $("#FirstForm").serialize();

    $.ajax({
        type: "POST",
        dataType: "jsonp",
        contentType: "application/json; charset=utf-8",
        url: "https://xyz.com",
        data: str,
        success: function (msg) {console.log("Success data post ---->" + JSON.stringify(msg)) },
        error: function (msg) { console.log("Error data post ---->" + JSON.stringify(msg)) }

    });
    //End Data Post to First Form

    //Call Click event of Second form .Use Form post and action method .

       //Copy First Form text box  value into second Form text box 
      $("#btnSecondForm").trigger('click'); 
   //End Click event


  return false;
}



//Form in Body

<form  id="FirstForm" onsubmit="return ValidateForm(this)">

 //text box HTML 

</form>


 <form id="SecondForm" style='display:none' action="https://abc.com" method="post">

 <input type="submit" value="Submit" id='btnSecondForm' />

 </form>