2010-09-22 54 views
1

我對jQuery和AJAX很新。Ajax與jQuery

我讀了一點點的jQuery在其網站上提供的API對此表示:

例子:警報了從請求的test.php(HTML或XML,根據返回的)的結果。

$.post("test.php", function(data){ 
    alert("Data Loaded: " + data); 
}); 

現在,我想知道test.php如何返回一些數據。我的意思是,有人可以在這裏提供一個樣本「test.php」

謝謝! :D

回答

3

你可以只返回一個簡單的字符串。無論輸出是URL參數將由您使用的是特定的AJAX方法來捕獲:

<?php echo 'this is a test'; ?> 

如果你想返回一個更復雜的結構(如JSON),你可以這樣做:

<?php 

$data = array('foo' => 'bar'); 
echo json_encode($data); 

?> 

,並在客戶端上:

$.post("test.php", function(json){ 
    alert("Data Loaded: " + json.foo); 
}, "json"); 
+0

因此,無論是呼應,被返回的數據,是嗎? – Anant 2010-09-22 13:37:34

+0

您請求URL(和標題)指向的內容,所以是的。 – Harmen 2010-09-22 13:38:30

+0

PHP文件不返回數據 - 它們產生頁面。 PHP文件的輸出就像一個純文本文件 - 你可以用'test.txt'替換'test.php',並把你想要的任何XML放在文本文件中。 – Skilldrick 2010-09-22 13:38:39

1

test.php看起來是這樣的:

<tag>Data!!!</tag> 

<?php標籤必要。

如果你使用JSON(這是一個不錯的選擇。很多東西),你可以創建一個PHP對象或數組,然後做:

<?php echo json_encode($my_object); ?> 
1
<?php echo 'return data'; ?> 

什麼情況是,瀏覽器會向給定的URL發出請求,就像任何其他web請求一樣,除了瀏覽器不顯示結果;它把它交給,這樣你就可以用它做你想要的。

回訪複雜的PHP對象爲JSON對象,你的JavaScript進行交互,請json_encode()

1

比方說,如果你有test.php的

<?php 
echo "test data from test.php" 
?> 

消息一些代碼被傳遞給javascript的數據變量,並最終會收到警報。

一些有用的鏈接

下面是示例,並且簡單的應用

索引。PHP

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <title><!-- Insert your title here --></title> 
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> 

<script type="text/javascript"> 

    function register(){ 
     $.ajax({ 
      type: "POST", 
      url: "submit_data.php", 
      data: "username=" + document.getElementById("username").value + 
        "&email=" + document.getElementById("email").value, 
      success: function(html){ 
       $("#response").html(html); 
      } 
     }); 

     } 

    </script> 
</head> 
<body> 
    <form action="" method="post"> 
      <p> 
      <label for="name">Name:</label><br /> 
      <input type="text" name="username" id="name" size="25" /> 
      </p> 
      <p> 
      <label for="email">Email:</label><br /> 
      <input type="text" name="email" id="email" size="25" /> 
      </p> 
      <p> 
      <input type="button" name="submit" id="submit" value="Subscribe" onclick="register()"/> 
      </p> 

    </form> 
    <div id="response"> 
     <!-- Our message will be echoed out here --> 
    </div> 
</body> 
</html> 

submit_data.php

<?php 

     // Variables 

       $db_host = 'localhost'; 
       $db_user = 'user'; 
       $db_pass = 'pass'; 
       $db_name = 'db'; 

     $Username = $_POST['username']; 
     $Email = $_POST['email'];  

     // DB 

     $connect = mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error()); 
     $connection = $connect; 

     mysql_select_db($db_name, $connect) or die(mysql_error()); 

     // Inserting into DB 

     $qInsertUser = mysql_query(" INSERT INTO `database` (`id`, `username`, `email`) 
            VALUES (``, `$Username`, `$Email`) 
            "); 

     if ($qInsertUser){ 
      echo "You are now subscribed to our newsletter. Thank you!"; 
     } else { 
      echo "Error!"; 
     } 

    ?>