0

応答に要素形式が含まれているかどうかをどのように見つけますか

    $.ajax({
        url     : $(this).attr('action'),
        type    : 'POST',
        success : function(response){
            if($(response).find('form').length)
            {
                alert("hii");
            }
        }
    });

フォームは、応答の最上位の要素または中間のどこかになります

4

4 に答える 4

2
$.ajax({
        url     : $(this).attr('action'),
        type    : 'POST',
        dataType: 'html', // you should set it 
                          //  if you response send html only
        success : function(response){
            if($(response).filter('form').length)
            {
                alert("hii");
            }
        }
    });

更新によると:

        ....
        dataType: 'html',
        success : function(response){
            var container = $('<div/>').append(response);
            if($(container).find('form').length)
            {
                alert("hii");
            }
        }
于 2012-06-01T14:41:12.703 に答える
0
$.ajax({
    url     : $(this).attr('action'),
    type    : 'POST',
    success : function(response){
        var hasForm = $("<div></div>").append(response).find("form").length > 0;
        if(hasForm)
        {
            alert("hi");
        }
    }
});
于 2012-06-01T14:46:23.793 に答える
0

dataType:'html'は、jQueryに応答を単なるhtmlとして処理するように強制します。一致した要素のセットを、それらのどこかにフォームを含む要素のみに減らす「has」関数を使用しています。

 $.ajax({
        url     : $(this).attr('action'),
        type    : 'POST',
        dataType : 'HTML',
        success : function(response){
           $(response).has('form').doMoreWorkHere();
        }
    });

または、次のように短く書くこともできます

$.post($(this).attr('action'), {}
       function(response){
         $(response).has('form').doMoreWorkHere();
       }, 'html');
于 2012-06-01T14:53:09.537 に答える
-1

「応答」はどこから来るのですか?それはどのような形式ですか?

返された変数をjsonで送信します:

success: function(msg){
    var obj = jQuery.parseJSON( msg ); 
    alert( obj.VARNAMEHERE );
}

または、特定の変数ではなく、応答全体を調べることもできます。それはあなたが探しているものを見つけるために結果をトラバースする方法についてあなたにアイデアを与えるでしょう。

于 2012-06-01T14:46:10.063 に答える