2009-07-22 18 views
2

當我在文本框上使用模糊功能檢查使用jquery ajax重複名稱工作正常。jquery ajax-如何檢查重名

這裏是代碼:

function duplicate(data){ 
    //alert(data); //successfully gives the value from the text input 
    $.post("test.php", {name: data}, function (data){ 
     if(data){ 
      alert('duplicate name'); 
     } 
    }); 
} 

$(function() { 
    $("#name").blur(function(){ 
     var data = $("#name").val(); 
     duplicate(data); 
    }); 
}); 

問題是,它顯示警告信息,在我們重名本身提出了一些情況,所以沒有使用檢查重複。

讓我知道使用onsubmit函數(jquery ajax或javascript)檢查重名的解決方案。

+0

究竟是什麼test.php的迴歸? – DLH 2009-07-22 12:24:08

回答

3

您的問題很混亂,因爲您在請求以外以及請求回調中使用了相同的變量名稱data

我不確定您是否要求根據已提交併返回頁面的數據檢查重複數據,服務器上是否存在數據,或者數據是否爲「是」。

根據您所提供的代碼,它會出現數據被認爲是複製如果服務器返回yes一旦POST完成。

無論哪種方式,也許這會幫助:

$(function() { 
    $('#name').blur(function() { 
    duplicate($('#name').val()); 
    }); 
}); 

function duplicate(sData) { 

    var sDuplicateValue = ...; // assign this whatever constitutes a duplicate value 
    if(isDataDuplicate(sData, sDuplicateValue)) { 
    // you have duplicate data 
    } 

    $.post('test.php', { name: sData }, function(sResposeData) { 

    /* because of question ambiguity, i don't know if you want to compare 
    * sData and sResponseData, or sResponseData and "yes." if it's the latter, 
    * just do isDataDuplicate(sResponseData, "yes"); otherwise, do this: 
    */ 

    if(isDataDuplicate(sData, sResponseData) { 
     // it's the same.. 
    } 
    }); 

} 

function isDataDuplicate(sData, sDuplicateValue) { 
    if(sDuplicateValue === null) { 
    return sData === 'yes'; 
    } else { 
    return sData === sDuplicateValue; 
    } 
} 
1

我會做這樣的事情:

$(function() { 
    $("#name").blur(function(){ 
     var value = $("#name").val(); 
     $.post(
      "checkDuplicates.php", 
      { name: value}, 
      function (data){ 
       if(data.response === 'yes'){ 
        $("#name").css({ 
         'border': '1px red solid' 
        }).parent().append('This name already exists'); 
       } else { 
        return false; 
       } 
      }, 
      'json' 
     ); 
    }); 
});