JQuery AJAX脚本没有保存

时间:2015-05-29 08:49:30

标签: javascript jquery ajax

新手在这里,我正在使用这两个jquery脚本一整天。当我触发第一个脚本时,第二个脚本将无效。

第一个脚本检查数据库中是否已存在某个产品名称,而第二个脚本是将数据条目保存在数据库中的功能。

当我解开第一个脚本时,它完全正常。 当产品名称存在时,它会禁用保存产品按钮, 当产品名称可用时,它会启用保存按钮。

如果数据条目没有冲突,您可以在数据库中保存详细信息,但是当我触发脚本将其保存到数据库(这是下面的第二个脚本)时,它不起作用。

以下是我的代码。

第一个脚本:

$('#prod_name').on('focusout',function(){
var prodname = $('#prod_name').val();
var compid = $('#compid').val();
$.ajax({
        url     :   'php/ajax.php',
        type    :   'POST',
        async   :   false,
        data    :   {
                    check   : 1,
                    compid  : compid,
                    pname   : prodname
                    },
        success: function(result){
            if (result==1) {
                alert('Product Name Already Exists! Please rename the product or give the product name a prefix');
                $('#save_prod').prop('disabled',true);
            }else{
                $('#save_prod').prop('disabled',false);
            }   
        }
        });

});

第二个脚本

$('#save_prod').on('click', function(event){
event.preventDefault();
var prodname = $('#prod_name').val();
var prodcat = $('#prod_category').val();
var prodpo = $('#prod_po').val();
var prodbrand = $('#prod_brand').val();
var produnit = $('#prod_unit').val();
var compid = $('#compid').val();
var prodcmf = $('#prod_color').val();
var prodtech = $('#prod_spec').val();
var prodship = $('#prod_ship').val();

if(prodname == ""){
    alert('Enter Product Name');
}else if(prodcat == ""){
    alert('Select Product Category');
}else if(produnit == ""){
    alert('Please select Unit');
}else if(prodpo == ""){
    alert('Enter PO Number (if not applicable please input N/A)');
}else if(prodbrand == ""){
    alert('Enter Product Brand (if not applicable please input N/A)');
}else if(prodcmf == ""){
    alert('Define Color/Material/Finish (if not applicable please input N/A)');
}else if(prodtech == ""){
    alert('Define Technical Specifications/Rating (if not applicable please input N/A)');
}else if(prodship == ""){
    alert('Define Shipping Mark (if not applicable please input N/A)');
}else{

    $.ajax({
        url     :   'php/ajax.php',
        type    :   'POST',
        async   :   false,
        data    :   {
                prodsave    : 1,
                compid : compid,
                pname  : prodname,
                pcat   : prodcat,
                punit  : produnit,
                ppo    : prodpo,
                pbrand : prodbrand,
                pcmf   : prodcmf,
                ptech  : prodtech,
                pship  : prodship
                },
        success: function(result){
                if (result == 0) {
                    var new_prod = $('#prod_name').val();
                    $('#name_of_product').append('<option value="'+new_prod+ '">'+new_prod+'</option>');
                    $('#name_of_product').trigger("chosen:updated");
                    alert('New Product details has been saved!');
                    $('#prod_name').val("");
                    $('#prod_category').val("");
                    $('#prod_po').val("");
                    $('#prod_brand').val("");
                    $('#prod_unit').val("")
                    $('#compid').val("");
                    $('#prod_color').val("");
                    $('#prod_spec').val("");
                    $('#prod_ship').val("");
                    $('#bgw').hide(500);
                    $('#bgb').hide(500);
                }else if(result == 1){
                    alert('There was a problem saving the product details. Pelase try again later.');
                }else if (result == 2) {
                    alert("Please fill in all fields");
                }else if(result == 3){
                    alert("Product Name already exists! Please press cancel and select from the list or if you are adding a new product, give the product a different name.");
                }   
            }
    });
}
});

任何帮助都会很高兴。

谢谢你们!

1 个答案:

答案 0 :(得分:3)

我看到你在两个ajax脚本中都有相同的url即php/ajax.php,有时浏览器会缓存ajax的响应,并将前面的ajax请求阻塞到相同的url,并将请求视为重复。

因此,对于此类情况,请始终使用 - cache: false,以便浏览器将每个请求视为新请求,并且不会缓存或阻止它。