2015-08-18 12 views
0

меня проблемы запуска моей Jquery функцию, нажмите: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 отправить конец

«щелкните» происходит от формы, которая должна поставить новые данные база данных mysql. Но перед отправкой я должен проверить, если «artikelnummer» уже установлен или нет - делать это с помощью функции Садись в функции мыши ...

Так что я подумал: создать функцию щелчка -> там получить все данные из базы данных mysql со сценарием «query_bauteile.php», который возвращает мне строку, подобную этой 10001, 10002, 10003, 10004 и т. д., затем установите эту строку в массив и проверьте, введенное значение для «artikelnummer» находится в массиве или нет. Это все работает до сих пор.

Но если я попытаюсь проверить, есть ли ошибка, или нет, сценарий отправляется, и проверка ошибок вообще не происходит.

Я попытался отправить мне фактическое значение переменной ошибки на моем сайте и увидеть, что она равна нулю, а затем она сообщает мне «fehler», если iI помещен в «artikelnummer», который уже существует.

так что мой вопрос заключается в том, как решить эту проблему, кажется, что сценарий работает полностью полностью, а затем проверяет функцию get ... для проверки ошибок. что я пропущу на этом этапе?

ответ

0

это ответ я дал на предыдущий вопрос, который является другим вопросом, но тот же корень:


рассмотрит следующий код:

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

Теперь журналы: Первый, Второй, Третий


Так что это сводится к тому, что браузер асинхронный язык и в ожидании вызова ajax, чтобы завершить его с остальной частью кода.

Ваша переменная fehler еще не заполнена данными из запроса ajax. Вы должны настроить его в обратном вызове или в обработчик успеха

ссылку на оригинальный пост: here

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

Вы оба спасли мой день !! ! Большое спасибо, мне нужно больше узнать о обратных вызовах - я не знаком с этим. Я использовал быстро и грязно

$.ajaxSetup ({async: false}); иметь свой код ожидания для выполнения вызова Ajax и установить $ .ajaxSetup ({асинхронной: истинный});»

:) - Еще раз спасибо, и есть великий день там :)

+0

нет проблем! человек, просто продолжайте наслаждаться программированием и не пытайтесь легко вырваться. Программирование - самое интересное, когда его сложно! –

Смежные вопросы