0

これは、ajaxによる私の応答によって返されたページです。

<!DOCTYPE HTML>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Insert title here</title>
<script src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
</head>
<body>

    <div id = "div1">
        <h1>HI am a dashboard</h1>
        <h1>HI am a dashboard</h1>
        <h1>HI am a dashboard</h1>
    </div>
</body>
</html>

そして私のajax成功コードで私はこれをやっています

$('body').on('submit', '#sign-in', function(e) {
    e.preventDefault();

    var data = $(this).serialize();

    var url = $(this).attr('action');
    $.ajax({
        //this is the php file that processes the data and send mail
        url : url,
        type : "POST",
        data : data,
        dataType:"html",
        //Do not cache the page
        cache : false,
        //success
        success : function(data) {
            console.log(data);
            console.log($(data).find('#div1').html());
        }
    });
})

console.log($(data).find('#div1').html()); 未定義です。一方、

console.log(data);

以前に述べたページを返します。

UPDATE 問題が見つかりました。コードに2つの「データ」変数があります。成功したものを変更しましたが、それでも未定義が返されます

$('#submit-login').on('click',function(e){
        $('#hidden-submit-login').click();
})

    $('body').on('submit', '#sign-in', function(e) {
        e.preventDefault();

        var data = $(this).serialize();

        var url = $(this).attr('action');
        $.ajax({
            //this is the php file that processes the data and send mail
            url : url,
            type : "POST",
            data : data,
            dataType:"html",
            //Do not cache the page
            cache : false,
            //success
            success : function(response) {
                console.log($(response).find('#div1').html());
                console.log(response);
                //console.log($((html).find('#div1').html();
            }
        });
    });
4

1 に答える 1

1

stringDOM 要素ではない要素に jQuery セレクターを適用しています。オブジェクトはリクエストの結果です
responseあなたのDOMには存在しません。

と同じように; document.getElementById('div1')戻りnullます。

使用する前に、DOM に HTML 要素を作成/追加する必要があります。

<div id="div1">...</div>ページ内のブロックを解析したい場合は、次のようにリクエストします。

<html>最初に、他のすべてのタグ ( 、<body><head>および 内のすべてを含む) を取り除くことをお勧めします<head>。したがって、ファイルには次のもののみが含まれます。

<div id="div1">
    <h1>HI am a dashboard</h1>
    <h1>HI am a dashboard</h1>
    <h1>HI am a dashboard</h1>
</div>

次に、AJAXsuccess()コールバック内で; jQuery DOM 挿入メソッドを使用します (ここで適切なものを選択してください: insideoutside ):

$.ajax({
    url : url,
    type : "POST",
    data : data,
    dataType: "text",
    cache : false,
    success : function(data) {
        if (data) {
            $('body').append(data); //this will append the html inside the response; at the end bottom of your page's body
            console.log($('#div1').html());
        }
    }
});

これdiv1で、ページの本文の下部に追加されたので、アクセスできるようになりました。

console.log($('#div1').html());

注: ID div1が一意であることを確認して、さらに操作を行うときに他の既存の要素を選択しないようにしてください。

于 2013-02-03T08:24:11.400 に答える