JQuery 点击功能无法正常工作
JQuery click function not working as it should
我遇到了麻烦 运行 我的 Jquery 点击功能:
$("#eintragen_bauteil_neu").click(function() { //soabld geklick
var fehler=0;
var artikelnummer = $("#artikelnummer").val(); //eingegebene artikelnummer auslesen
var kunde = $("#kunde").val(); // eingegebenen Kunden auslesen
//generate array artikelnummern von kunde gewählt
$.get("query_bauteile.php?kunde="+kunde, function(data){ //gibt 1001,1002,1003,1144 ... etc als tring zurueck
bauteile_array = data.split(","); //string wird gesplittet durch (",")und zu array bauteile_array
if (inArray(artikelnummer,bauteile_array) == -1) {
alert("alles ok");
fehler = 0; //wenn Bauteilnummer nicht doppelt vergeben
}
else {
alert ("fehler");
fehler = 1; //wenn Bauteilnummer doppelt vergeben
}
}); //fuction data //von get query_bauteile.php
//Fehlerbehandlung
alert(fehler);
if (fehler == 1) {
$("#artikelnummererror").html("Bitte Artikelnummer NEU eingeben darf nicht doppelt vergeben werden<br />");
$("#artikelnummererror").show( "fast" );}
// if ($("#artikelnummererror").html()=="") {alert("kein Fehler"); }
// else {alert{"fehler die 2te");
//else {/*alert ('tosend');*/
//$.post("send_bauteil.php",{ form_name: "bauteil_neu",
// name: $("#name").val(),
// useremail: $("#email").val(),
// web: $("#web").val(),
// questions: $("#text").val()},
//function(data){
//$("#donediv").html(data);
//}); //post
//} //if errorar
return false }); //click
//bauteil_neu_form发送结束
"click" 来自应将新数据放入 mysql 数据库的表单。
但在发送之前,我必须检查 "artikelnummer" 是否已经设置 - 使用点击函数中的 get 函数来执行此操作 ...
所以我想:
创建一个点击函数 -> 从 mysql 数据库中获取所有数据
使用脚本 "query_bauteile.php" 返回一个字符串,例如 10001、10002、10003、10004 等等,然后将此字符串设置为数组并检查 "artikelnummer" 的输入值是否在阵列与否。
到目前为止一切正常。
但是如果我尝试检查脚本是否正在发送并且根本没有错误检查发生。
我试图向我发送我站点内错误变量的实际值,发现它为零,然后它告诉我 "fehler" 如果我输入一个 "artikelnummer" 已经存在。
所以我的问题是如何解决这个问题,似乎脚本完全运行一次,然后检查 get 函数......以进行错误检查。我现在错过了什么?
这是我对上一个问题的回答,这是一个不同的问题,但根源相同:
考虑以下代码:
console.log('First');
jQuery.get('page.html', function(data) {
console.log("Second");
});
console.log('Third');
在此代码段中,您的控制台将记录:第一、第三、第二。
现在,如果我们将其设为 运行 异步:
console.log('First');
getPage("page.html, function(){
console.log('Third');
}
var getPage(url, callback) {
jQuery.get(url, function(data) {
console.log("Second ");
}
callback();
}
现在记录:第一、第二、第三
所以它归结为 javascript 是一种异步语言,在等待 ajax 调用完成它时,它与其余代码连续。
您的变量 fehler 尚未填充来自 ajax 请求的数据。
您应该在回调或成功处理程序中调整它
link 到原始 post:here
根据你的描述我相信你可以使用:
$("#eintragen_bauteil_neu").on('click', function () {
var fehler = 0;
var artikelnummer = $("#artikelnummer").val();
var kunde = $("#kunde").val();
var jqxhr = $.get("query_bauteile.php?kunde=" + kunde)
.done(function () {
alert("success");
bauteile_array = data.split(",");
if (inArray(artikelnummer, bauteile_array) == -1) {
alert("alles ok");
fehler = 0;
} else {
alert("fehler");
fehler = 1;
}
})
.fail(function () {
alert("error");
})
.always(function () {
alert("finished");
alert(fehler);
if (fehler == 1) {
$("#artikelnummererror").html("Bitte Artikelnummer NEU eingeben darf nicht doppelt vergeben werden<br />");
$("#artikelnummererror").show("fast");
}
});
});
你们两个救了我的命!!!
非常感谢,我必须了解更多有关回调的信息 - 我对此不太熟悉。
我用的又快又脏
$.ajax设置({async: false});让您的代码等待 ajax 调用的执行并设置 $.ajaxSetup({async: true});"
:) – 再次感谢,祝您度过愉快的一天! :)
我遇到了麻烦 运行 我的 Jquery 点击功能:
$("#eintragen_bauteil_neu").click(function() { //soabld geklick
var fehler=0;
var artikelnummer = $("#artikelnummer").val(); //eingegebene artikelnummer auslesen
var kunde = $("#kunde").val(); // eingegebenen Kunden auslesen
//generate array artikelnummern von kunde gewählt
$.get("query_bauteile.php?kunde="+kunde, function(data){ //gibt 1001,1002,1003,1144 ... etc als tring zurueck
bauteile_array = data.split(","); //string wird gesplittet durch (",")und zu array bauteile_array
if (inArray(artikelnummer,bauteile_array) == -1) {
alert("alles ok");
fehler = 0; //wenn Bauteilnummer nicht doppelt vergeben
}
else {
alert ("fehler");
fehler = 1; //wenn Bauteilnummer doppelt vergeben
}
}); //fuction data //von get query_bauteile.php
//Fehlerbehandlung
alert(fehler);
if (fehler == 1) {
$("#artikelnummererror").html("Bitte Artikelnummer NEU eingeben darf nicht doppelt vergeben werden<br />");
$("#artikelnummererror").show( "fast" );}
// if ($("#artikelnummererror").html()=="") {alert("kein Fehler"); }
// else {alert{"fehler die 2te");
//else {/*alert ('tosend');*/
//$.post("send_bauteil.php",{ form_name: "bauteil_neu",
// name: $("#name").val(),
// useremail: $("#email").val(),
// web: $("#web").val(),
// questions: $("#text").val()},
//function(data){
//$("#donediv").html(data);
//}); //post
//} //if errorar
return false }); //click
//bauteil_neu_form发送结束
"click" 来自应将新数据放入 mysql 数据库的表单。 但在发送之前,我必须检查 "artikelnummer" 是否已经设置 - 使用点击函数中的 get 函数来执行此操作 ...
所以我想: 创建一个点击函数 -> 从 mysql 数据库中获取所有数据 使用脚本 "query_bauteile.php" 返回一个字符串,例如 10001、10002、10003、10004 等等,然后将此字符串设置为数组并检查 "artikelnummer" 的输入值是否在阵列与否。 到目前为止一切正常。
但是如果我尝试检查脚本是否正在发送并且根本没有错误检查发生。
我试图向我发送我站点内错误变量的实际值,发现它为零,然后它告诉我 "fehler" 如果我输入一个 "artikelnummer" 已经存在。
所以我的问题是如何解决这个问题,似乎脚本完全运行一次,然后检查 get 函数......以进行错误检查。我现在错过了什么?
这是我对上一个问题的回答,这是一个不同的问题,但根源相同:
考虑以下代码:
console.log('First');
jQuery.get('page.html', function(data) {
console.log("Second");
});
console.log('Third');
在此代码段中,您的控制台将记录:第一、第三、第二。
现在,如果我们将其设为 运行 异步:
console.log('First');
getPage("page.html, function(){
console.log('Third');
}
var getPage(url, callback) {
jQuery.get(url, function(data) {
console.log("Second ");
}
callback();
}
现在记录:第一、第二、第三
所以它归结为 javascript 是一种异步语言,在等待 ajax 调用完成它时,它与其余代码连续。
您的变量 fehler 尚未填充来自 ajax 请求的数据。 您应该在回调或成功处理程序中调整它
link 到原始 post:here
根据你的描述我相信你可以使用:
$("#eintragen_bauteil_neu").on('click', function () {
var fehler = 0;
var artikelnummer = $("#artikelnummer").val();
var kunde = $("#kunde").val();
var jqxhr = $.get("query_bauteile.php?kunde=" + kunde)
.done(function () {
alert("success");
bauteile_array = data.split(",");
if (inArray(artikelnummer, bauteile_array) == -1) {
alert("alles ok");
fehler = 0;
} else {
alert("fehler");
fehler = 1;
}
})
.fail(function () {
alert("error");
})
.always(function () {
alert("finished");
alert(fehler);
if (fehler == 1) {
$("#artikelnummererror").html("Bitte Artikelnummer NEU eingeben darf nicht doppelt vergeben werden<br />");
$("#artikelnummererror").show("fast");
}
});
});
你们两个救了我的命!!! 非常感谢,我必须了解更多有关回调的信息 - 我对此不太熟悉。 我用的又快又脏
$.ajax设置({async: false});让您的代码等待 ajax 调用的执行并设置 $.ajaxSetup({async: true});"
:) – 再次感谢,祝您度过愉快的一天! :)