使用ajax请求多个url

时间:2014-09-15 07:26:37

标签: jquery ajax url

您好我正在尝试使用按钮单击时使用ajax调用多个URL但它无法正常工作

这是我的代码

<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc(cfun)
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=cfunc;
xmlhttp.open("GET",url/sendmessage.php?user=password=&mobile=7828208357&message=hello dear shakti&sender=&type=3INFORM",true);
xmlhttp.send();
}
function myFunction()
{
loadXMLDoc("GET","demo.html",function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  });
}
</script>
</head>
<body>

<h2>AJAX</h2>
<button type="button" onclick="myFunction()">Request data</button>
<div id="myDiv">
</div>

</body>
</html>

我错了 我怎样才能实现这个目标

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:6)

阅读promises and defered

var ajax1 = $.ajax({ 
  dataType: "json",
  url: "url",
  async: true,
  success: function(result) {}                     
});


var ajax2 = $.ajax({ 
  dataType: "json",
  url: "url",
  async: true,
  success: function(result) {}  
});

$.when( ajax1 , ajax2  ).done(function( a1, a2 ) {
   // a1 and a2 are arguments resolved for the page1 and page2 ajax requests, respectively.
   // Each argument is an array with the following structure: [ data, statusText, jqXHR ]
   var data = a1[ 0 ] + a2[ 0 ]; // a1[ 0 ] = "Whip", a2[ 0 ] = " It"
   if ( /Whip It/.test( data ) ) {
      alert( "We got what we came for!" );
   }
});

另见jQuery.when()

答案 1 :(得分:0)

您可以使用async执行此操作:

<script type="text/javascript" src="https://raw.githubusercontent.com/caolan/async/master/dist/async.js"></script>
<script type="text/javascript">


    var requestUrls = [];//array of urls
        //request all data
async.each(requestUrls, function(url, callback) {
    $.ajax({
        url:url
    }).done(function(data){
        console.log('data',data);
        callback();
    }).fail(function(err){
        console.log('err',err);
        callback(err);
    });
}, function(err) {
    // if any of the file processing produced an error, err would equal that error
    if( err ) {
      // One of the iterations produced an error.
      // All processing will now stop.
      console.log('A url failed to process',err);
    } else {
      console.log('All url have been processed successfully');
    }
});

</script>