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});"

:) – 再次感谢,祝您度过愉快的一天! :)