我在运行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发送结束
&#34;点击&#34;来自一个应该将新数据放入mysql数据库的表单。 但在发送之前我必须检查&#34; artikelnummer&#34;已设置或未设置 - 使用单击函数中的get函数执行此操作...
所以我想: 创建点击功能 - &gt;在那里从mysql数据库获取所有数据 使用脚本&#34; query_bauteile.php&#34;这给了我一些字符串,比如10001,10002,10003,10004等,然后将这个字符串设置成一个数组并检查输入的值是否为&#34; artikelnummer&#34;是否在数组中。 到目前为止,这一切都在发挥作用。
但是,如果我尝试检查脚本是否发送错误,并且根本没有发生错误检查。
我试图在我的网站中向我发送错误变量的实际值并看到它为零,之后它告诉我&#34; fehler&#34;如果我投入了一个&#34; artikelnummer&#34;已经存在。
所以我的问题是如何解决这个问题似乎脚本运行一次完全throgh然后检查get函数...进行错误检查。我现在缺少什么?
答案 0 :(得分:0)
这是我给前一个问题的答案,这是一个不同的问题,但是同一个根:
<小时/> 请考虑以下代码:
console.log('First');
jQuery.get('page.html', function(data) {
console.log("Second");
});
console.log('Third');
在此片段中,您的控制台将记录:First,Third,Second。
现在,如果我们要让它运行async:
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请求中的数据。 您应该在回调或成功处理程序中调整它
链接到原始帖子:here
答案 1 :(得分:0)
根据您的描述,我相信您可以使用:
$("#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");
}
});
});
答案 2 :(得分:0)
你们都救了我的一天! 非常感谢,我必须更多地了解回调 - 我对此并不熟悉。 我使用了快速而又脏的
$ .ajaxSetup({async:false});让代码等待执行ajax调用并设置$ .ajaxSetup({async:true});&#34;
:) - 再次感谢,祝你有美好的一天! :)