2012-04-26 11 views
11

To jest mój pierwszy post tutaj i mam nadzieję, że ktoś będzie mógł mi pomóc. W zeszłym tygodniu pracowałem nad moim projektem. Najwyraźniej utknąłem z ostatnią częścią.
W zasadzie mam czat AJAX i kiedy przesyłam linię, wysyłam (przy użyciu metody Post) całą analizowaną linię (do pliku o nazwie analysis.php).
Linia czatu jest analizowana i znajduje potrzebną zmienną, wykonując zapytania w bazie danych MySql.
Wszystko, czego potrzebuję, to mieć tę zmienną za pomocą JQuery-AJAX i umieścić ją na div w moim pliku html (aby mogła być wyświetlana po prawej i lewej stronie, niezależnie od tego, z jakiego czatu).Pobierz zmienną z pliku PHP za pomocą JQuery/AJAX

Oto moje pliki:
analysis.php

<?php 
$advert = $row[adverts]; 
?> 

ajax-chat.html

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>AJAX Chat</title> 

<link rel="stylesheet" type="text/css" href="js/jScrollPane/jScrollPane.css" /> 
<link rel="stylesheet" type="text/css" href="css/page.css" /> 
<link rel="stylesheet" type="text/css" href="css/chat.css" /> 

</head> 

<body> 

<div id="chatContainer"> 

    <div id="chatTopBar" class="rounded"></div> 
    <div id="chatLineHolder"></div> 

    <div id="chatUsers" class="rounded"></div> 
    <div id="chatBottomBar" class="rounded"> 
     <div class="tip"></div> 

     <form id="loginForm" method="post" action=""> 
      <input id="name" name="name" class="rounded" maxlength="16" /> 
      <input id="email" name="email" class="rounded" /> 
      <input type="submit" class="blueButton" value="Login" /> 
     </form> 

     <form id="submitForm" method="post" action=""> 
      <input id="chatText" name="chatText" class="rounded" maxlength="255" /> 
      <input type="submit" class="blueButton" value="Submit" /> 
     </form> 

    </div> 

</div> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script src="js/jScrollPane/jquery.mousewheel.js"></script> 
<script src="js/jScrollPane/jScrollPane.min.js"></script> 
<script src="js/script.js"></script> 
</body> 
</html> 

Tak, ja po prostu staramy się uzyskać $ ogłoszenie z pliku analysis.php (po całej analizie jest zrobione), a za pomocą JQuery/AJAX przekazuje go do pliku ajax-chat.html. Każda pomoc jest naprawdę doceniana. Przeszukałem wszystko, ale nie znalazłem czegoś, co mogłoby mi pomóc. Z góry dzięki.

+0

Nie możesz umieścić niczego w swoim pliku HTML: przed uruchomieniem AJAX Twój plik HTML nie istnieje, został wysłany do przeglądarki, która utworzy własną strukturę danych. Możesz uruchomić Javscript w tej przeglądarce, która zaktualizuje strukturę. Nie mówię w JQuery, więc nie mogę ci specjalnie doradzić. –

+0

Dziękuję za odpowiedź ... Po prostu, aby było bardziej zrozumiałe: Załóżmy, że ten czat jest czymś w rodzaju detektora nastroju. Jeśli linia zostanie przeanalizowana i okaże się, że nastrój użytkownika jest dobry, to reklama $ będzie miała wartość "dobra" i powinna jakoś zostać pobrana i umieszczona w div w html i wyświetlona użytkownikowi. Jeśli to czyni bardziej jasnym. – harris21

+0

Tak, rozumiem, co próbujesz zrobić: to jest problem, który Ajax został wymyślony do rozwiązania. Próbowałem tylko ostrzec cię przed konceptualnym błędem, który myślałam, że robisz (ale mogę się mylić), że w jakiś sposób robiłeś coś w tym pliku HTML. Nie możesz: wszystko, co możesz zrobić, to zmodyfikować DOM w przeglądarce, która została utworzona z tego HTML. –

Odpowiedz

31

Jeśli dobrze rozumiem, musisz użyć JSON. Oto próbka.

W swojej pisać PHP:

<?php 
// filename: myAjaxFile.php 
// some PHP 
    $advert = array(
     'ajax' => 'Hello world!', 
     'advert' => $row['adverts'], 
    ); 
    echo json_encode($advert); 
?> 

Następnie, jeśli używasz jQuery, wystarczy napisać:

$.ajax({ 
     url : 'myAjaxFile.php', 
     type : 'POST', 
     data : data, 
     dataType : 'json', 
     success : function (result) { 
      alert(result['ajax']); // "Hello world!" alerted 
      console.log(result['advert']) // The value of your php $row['adverts'] will be displayed 
     }, 
     error : function() { 
      alert("error"); 
     } 
    }) 

I to wszystko. To jest JSON - służy do wysyłania zmiennych, tablic, obiektów itp. Między serwerem a użytkownikiem. Więcej informacji tutaj: http://www.json.org/. :)

+0

Uwaga: PHP 5.2+ jest wymagane dla 'json_encode ($ var)' LUB PHP 4.3+ z rozszerzeniem PECL 1.2+. @ erik1001 to również dobry pomysł, aby połączyć dokumentację do OP http://php.net/manual/en/function.json-encode.php – Ozzy

+0

Jeśli zamiast alertu (wynik ['ajax']), możemy użyj $ ("# the_div_I_want"). html (result); , czy ta zmienna będzie wyświetlana w tym konkretnym hlml div? – harris21

+0

Oczywiście, że tak. Możesz nawet wysyłać HTML z serwera i wyświetlać go w wybranym miejscu. – suricactus

Powiązane problemy