Javascript 同时调用ajax函数onload和onclick
我在外部javascript文件中有一个Ajax函数,它是: ajax.jsJavascript 同时调用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) {
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);
});