How to await the ajax request?

后端 未结 3 1112
终归单人心
终归单人心 2020-12-15 17:45

I am trying to write a JS code that will cancel the \"btn_submit\" buttons .onclick event if the given number already exists in the database. I use AJAX to query the DB for

3条回答
  •  一个人的身影
    2020-12-15 18:03

    (I acknowledge this is not the best way to go about things, but this is the quickest way to get your code working as is. Really though, you should rethink how you are pulling the numOfRows value so that it will work with truly asynchronous Ajax. All that being said...):

    Start by setting async : false in the $.ajax call. The A in Ajax stands for asynchronous. That means, execution continues rather than waiting for it to return. You want to turn that off (i.e. make it synchronous). Actually, that should be the whole solution given the code you have there.

    $.ajax({
            url: 'php/SeeIfNumberExists?number=' + document.getElementById('number_inp').value,
            type: "GET",
            async: false,
            cache: false,
            success: function (html) {
               numOfRows = parseInt(html);               
            }
        });
    

    One caveat from the docs for $.ajax:

    Cross-domain requests and dataType: "jsonp" requests do not support synchronous operation. Note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active. As of jQuery 1.8, the use of async: false with jqXHR ($.Deferred) is deprecated; you must use the success/error/complete callback options instead of the corresponding methods of the jqXHR object such as jqXHR.done() or the deprecated jqXHR.success().

提交回复
热议问题