2009-07-22 15 views
2

jquery ajaxを使って重複している名前を確認するために、テキストボックスにblur関数を使用すると問題なく動作します。ここで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

を? – DLH

+0

ここでtest.php: $ name = $ _POST ['name']; \t if($ name == 'test'){ \t \t echo "Duplicate Name"; \t} else { \t \t echo "重複していません"; \t} 重複していない場合は、名前をレコードにphpコードで保存します。 – Murugesh

答えて

3

要求のコールバックと同様に、同じ変数名dataを使用しているため、ご質問が混乱しています。

すでに送信されているページに戻っているデータ、サーバー上に存在するデータ、または単に「はい」のデータに基づいて重複を確認するかどうかはわかりません。

あなたが提供されたコードに基づいて、データはサーバがPOST完了後yesを返した場合、重複していると考えられること思われます。

いずれかの方法で、多分これは役立ちます:

$(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

私はこのような何かやる:test.phpを返しているまさに

$(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' 
     ); 
    }); 
}); 
関連する問題