Domanda

Ho sviluppato codice con Ajax e jQuery. Ho una risposta da my.php, e l'ho fatto ha tentato di estrarre i valori della risposta. Qui il codice (HTML):

My.php

?php
    echo '<div id="title">My Title </div>';
    echo '<div id="message"> My message </div>';
?>

Provo ad estrarre il titolo e il messaggio, quindi il mio codice è sotto.

    <head>
        <script type="text/javascript" src="js/jquery-1.2.6.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                alert("OK");

                $.ajax({
                    type:"POST",
                    url: "my.php",
                    cache:false ,
                    success: function(data){
                        $("#response").html(data);
                        var $response = $(data);
                        var oneval = $response.find('#title').text();
                        var subval = $response.find('#message').text();
                        alert(oneval);
                    }
                });
            });
        </script>
    </head>

    <body>
        <div id="response">
        </div>
    </body>
</html>

...

Il problema è quando ho provato ad avvisare, non funziona. Cosa c'è di sbagliato in questa logica? Dovrei usare un'altra funzione per estrarre il titolo e il messaggio?

È stato utile?

Soluzione

OK, vai a http://jsbin.com/udige/ e puoi vederlo funzionare .

La chiave sta usando .filter , non .find poiché i due div sono elementi root nella risposta. Il mio errore.

Fondamentalmente fai quanto segue:

success: function(data){
    $("#response").html(data);
    var $response = $(data);
    var oneval = $response.filter('#title').text();
    var subval = $response.filter('#message').text();
    alert(oneval);
}

Altri suggerimenti

Se la risposta sta tornando mentre l'hai scritta, allora il codice che ti ho dato funzionerà.

Devi davvero imparare come usare un debugger ( Firebug ) e inserire punti di interruzione nel codice in modo da poter utilizzare la console per testare i selettori e esaminare i valori delle variabili, ecc. Inoltre avresti dovuto davvero rispondere alla domanda originale e alla risposta che ho dato piuttosto che aprire una domanda completamente nuova, soprattutto perché non hai nemmeno fatto un riferimento incrociato al tuo originale.

Prova invece a utilizzare questo:

var oneval = $("#response #title").text();
var subval = $("#response #message").text();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top