2010-04-06 18 views
15

Mam funkcję jquery-ajax, która wysyła dane do skryptu php, a problem dotyczy wartości zwracanej, zwraca całą stronę zamiast pojedynczej wartości.jQuery Ajax zwraca całą stronę

Dziękuję za poświęcony czas i pomoc.

$("#ajaxBtn").click(function(){ 
var inputText = $("#testText").val(); 

$.ajax({ type: "POST", 
url: "index.php", 
data: "testAjax="+inputText, 
dataType: "html", 
success: function(html){ 
alert(html); 
} 
}); 
});   
+0

Jaka jest oczekiwana wartość zwrotu? JSON, tekst, XML, etc ...? Sądzę, że ma to coś wspólnego z twoim skryptem PHP, więc byłoby pomocne, gdybyś to opublikował. –

+1

prawo, oto kod:

+0

Wiem, że to dwa lata po tym fakcie, ale mam już problem. Potrzebuję trwałych obiektów, więc uznałem, że wystarczy wywołanie ajaxa na tej samej stronie. Niestety, nie, otrzymuję całą stronę jako odpowiedź. – Dale

Odpowiedz

28

Tak to działa. Żądasz index.php za pośrednictwem AJAX, dzięki czemu uzyskasz całą zawartość index.php.

Jeśli chcesz uzyskać konkretną wartość, zrób nową stronę PHP, która wyświetli tylko tę wartość, i poproś o zawartość adresu URL.

+0

Dzięki! Zmieniłem żądanie na stronę "ajax.php" i działa dobrze! –

5

Sophia, W twoim przypadku nie powinieneś wysyłać swoich danych do pliku php, który, jeśli przegląda go przeglądarka internetowa, wyświetla stronę internetową. Powinieneś wysłać swoje informacje do pliku php, który zwraca tylko te dane, które chciałbyś zobaczyć.

Zamiast więc "index.php" utwórz plik o nazwie "my-ajax-script.php". Plik ten powinien zawierać wszelkie niezbędne pliki "include()", aby połączyć się z bazą danych i plikami funkcji php (np. Do sanityzacji danych POST). Następnie plik powinien mieć kod, który przetwarza dane POST, a echo zawiera dane z niektórymi znacznikami html. Te dane zostaną wstawione do istniejącego DOM (znaczniki html).

9

Więc jeśli masz to na twój index.php na początku ?:

<?php 
    if (isset($_POST["testAjax"])) { 
     echo $_POST["testAjax"]; 
    } 
?> 

Jeśli ten scenariusz jest wyprowadzanie dalszy tekst to oczywiście będzie to również otrzymałem przez wywołanie Ajax. Można umieścić exit() po echo, aby zapobiec skrypt z przetwarzane dalej:

if (isset($_POST["testAjax"])) { 
    echo $_POST["testAjax"]; 
    exit(); 
} 

Również użyć dataType: 'text' jako wartość wracasz oczywiście nie jest HTML.


Lub, jak sugerują inni, utwórz nową stronę, która jest odpowiedzialna za obsługę żądania Ajax. Jeśli robisz coś więcej niż tylko wysyłanie odebranej wartości (tj. Bardziej złożone operacje), powinieneś to zrobić mimo to.

+0

Uratowałeś mnie! –

+0

@Felix, mam podobny problem. Czy możesz rozwinąć więcej na temat swojej odpowiedzi? Biorę dane wejściowe z formularza html i przekazuję je do zapytania php/mysql. Więc zawarłem wszystko w jednym pliku. Czy jest lepszy sposób to obsłużyć? Pomocne mogą być dowolne linki do przykładu. Dziękuję – user5249203

+0

Człowieku jesteś smakiem. Chciałbym móc więcej niż 1 –

Powiązane problemy