Javascript 同时调用ajax函数onload和onclick

Javascript 同时调用ajax函数onload和onclick,javascript,ajax,Javascript,Ajax,我在外部javascript文件中有一个Ajax函数,它是: ajax.js function webservice(x){ jQuery.ajax ({ //some code here }); Data = function(data){ if(x==1) {

我在外部javascript文件中有一个Ajax函数,它是:

ajax.js

function webservice(x){

   jQuery.ajax
            ({
                //some code here
            });

  Data = function(data){
                    if(x==1)
                            {
                                for(i=0;i<10;i++)
                                {
                                     webservice(i);
                                alert"Onload");
                                }
                            }
                            else 
                            if(x==5)
                            {
                                for(i=0;i<10;i++)
                                {
                                webservice(i);
                                alert ("Onclick");
                                }
                            }

        }
功能Web服务(x){
jQuery.ajax
({
//这里有一些代码
});
数据=函数(数据){
如果(x==1)
{

for(i=0;i,因为
$。ajax
是一个异步函数。在当前版本中,您的代码可能在ajax调用结束之前被调用。因此,您有一个wird行为

要解决此问题,必须将代码移到成功回调中,如下所示:

function webservice(x) {
    var inputParam = x;
    jQuery.ajax({
        url: 'test.php',
        data: {},
        success: function (data) {
            if (inputParam  == 1) {
                for (i = 0; i < 10; i++) {
                    webservice(i);
                    alert("Onload");
                }
            } else if (inputParam  == 5) {
                for (i = 0; i < 10; i++) {
                    webservice(i);
                    alert("Onclick");
                }
            }
        },
        error: function (jqXHR, textStatus, errorThrown) {
            alert('an error occurred!');
        }
    });
}


使用jQuery的事件处理程序(例如,
$.on()
)jQuery可以代替内联或
window.onload
。尤其是
window.onload
,自行删除事件。如果您使用jQuery,最好只使用jQuery的处理程序。感谢您的努力。但当我根据您的更改在success函数中包含数据时,它会说数据未定义,而如果我在外部运行,就像我告诉它正在运行一样。仍然不工作。我需要调用jQuery.ajax url中定义的数据。因此无法避免。如果有其他方法,那么也欢迎使用这些方法。
function webservice(x) {
    var inputParam = x;
    jQuery.ajax({
        url: 'test.php',
        data: {},
        success: function (data) {
            if (inputParam  == 1) {
                for (i = 0; i < 10; i++) {
                    webservice(i);
                    alert("Onload");
                }
            } else if (inputParam  == 5) {
                for (i = 0; i < 10; i++) {
                    webservice(i);
                    alert("Onclick");
                }
            }
        },
        error: function (jqXHR, textStatus, errorThrown) {
            alert('an error occurred!');
        }
    });
}
window.onload=function()
 {
   webservice(1)('onload');    //call 1 
 }
$(document).ready(function(){
    webservice(1);//call 1 
});
  <input id="webservice"  type = "button" name = "webservice" value = "Call Webservice"       
  onclick="webservice(5)"/>
$('#webservice').click(function(){
    webservice(5);
});