jquery函数命令获取插入到本地数据库的变量

dfuffjeb  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(276)

我有一个问题,我通过jquery将表单提交到本地数据库。但是,基于其中一个输入字段,我将调用ajax来获取匹配的图片文件名。当我单击submit时,脚本会运行,但是ajax的函数会在数据放入数据库表后运行(我看到在输入表单数据后会触发警报)。因此,我无法在提交表单时输入图像名称。您能帮助我理解如何在sql函数运行之前进行ajax函数调用以获取newpic的值吗?
下面是我的示例代码,删除了安全详细信息。谢谢你的帮助。

$("#submit_item").click(function(e){
    e.preventDefault();
    var prodID = $("#i_admin_prodID").val();
            var userID = $("#i_admin_uid").val();
    var drawSize = $("#i_admin_dSize").val();
    var pocket = $("#i_admin_pocket").val();
    var orgItemID = $("#i_admin_orgItemID").val();
    var itemID = $("#admin_item_id").val();
    if ( itemID ) {
     newpic = getPicture(itemID);
    }
    db.transaction(function (tx) {
        tx.executeSql("INSERT INTO vend_products ...")
      }, function(error) {
        alert("error" + error.message);
      }, function() {
        sendOrdertoEmail();
    });
}); 

function getPicture(zItemID) {
  $.ajax({
    type: "POST",
    url : '/get_new_picture.php?IT=' + zItemID,
    dataType: "json",
    success: function(data) {
        alert('PIC: ' + data );
        return data;
    },
    error: function() {
        alert('Error occured');
    }
  });
}
z9zf31ra

z9zf31ra1#

您遇到的问题是由于异步工作的ajax造成的。
我不知道你是否想要求归还任何东西。我让你修改你的项目
试着这样做:

$("#submit_item").click(function(e){
    e.preventDefault();
    var prodID = $("#i_admin_prodID").val();
            var userID = $("#i_admin_uid").val();
    var drawSize = $("#i_admin_dSize").val();
    var pocket = $("#i_admin_pocket").val();
    var orgItemID = $("#i_admin_orgItemID").val();
    var itemID = $("#admin_item_id").val();
    if ( itemID ) {
     getPicture(itemID);
    }
}); 

function getPicture(zItemID) {
  $.ajax({
    type: "POST",
    url : '/get_new_picture.php?IT=' + zItemID,
    dataType: "json",
    success: function(data) {
        console.log('PIC: ' + data );
    },
    error: function() {
        alert('Error occured');
    }
  }).done(function(data) { //data is for your newPic
     db.transaction(function (tx) {
          tx.executeSql("INSERT INTO vend_products ...")
        }, function(error) {
          alert("error" + error.message);
        }, function() {
          sendOrdertoEmail();
      });
    });
}

相关问题