2012-11-13 45 views
6

Tôi mới sử dụng AJAX và bị nhầm lẫn với những gì PHP chuyển lại cho jQuery. Vì vậy, bạn có một chức năng AJAX như thế này:Giá trị trả về AJAX jQuery PHP

$.ajax({ url: '/my/site', 
    data: {action: 'test'}, 
    type: 'post', 
    success: function(output) { 
        alert(output); 
       } 
}); 

(Tôi mất này từ ajax một trang StackOverflow.)

Nhưng về tài nguyên khác nhau họ sẽ có phần thành công giống như thế này:

success: function(data) {functionfoocommandshere} 

Tôi chỉ bối rối như những gì quy định việc đặt tên biến này? Nếu PHP cuối cùng lặp lại một mảng:

echo $myVar; 

Làm cách nào để lấy từ AJAX?

+1

Các 'dữ liệu' biến của' phương pháp success' sẽ tổ chức bất cứ điều gì bạn 'echo' trong PHP. Bạn không thể truyền trực tiếp mảng; bạn phải chuyển nó sang JSON trước. – woz

+0

Biến nào bạn bị nhầm lẫn về việc đặt tên? – Alfo

+0

Xem http://www.php4every1.com/tutorials/jquery-ajax-tutorial/ – GBD

Trả lời

13

Ajax-Requests tìm nạp toàn bộ trang web. Vì vậy, bạn sẽ không nhận được bất kỳ dữ liệu nào trong các biến, nhưng toàn bộ trang web trong tham số dữ liệu. Tất cả các echos bạn đã tạo cùng nhau sẽ nằm trong tham số này. Nếu bạn muốn lấy một mảng, bạn nên chuyển đổi nó thành json trước đó.

echo json_encode($myArray); 

Sau đó, bạn có thể nhận được nó thông qua Ajax theo cách này

$.ajax({ url: '/my/site', 
data: {action: 'test'}, 
dataType: 'json', 
type: 'post', 
success: function(output) { 
       alert(output); 
      } 
}); 
+0

Bạn có thực sự cần 'echo' giá trị không? nếu bạn không muốn hiển thị 'đầu ra' thì sao? @Gnietschow –

+0

'echo' không hiển thị bất cứ điều gì cho người dùng nó chỉ ghi dữ liệu trong phản hồi của máy chủ, vì vậy nó được gửi cho khách hàng. Sau khi cuộc gọi ajax nhận được 'output', bạn có thể hiển thị phản hồi này cho người dùng hay không. – Gnietschow

-1

Dữ liệu được trả về từ hàm AJAX của PHP, có thể được truy xuất từ ​​khối success. Đây là manual

$.ajax({ url: '/my/site', 
data: {action: 'test'}, 
type: 'post', 
dataType: 'json', 
success: function(output) { 
    //output is the data returned from PHP AJAX function in JSON format 
    alert(output); 
    } 
}); 
+0

Vì vậy, nó không quan trọng? lệnh .ajax sẽ biết rằng bất kỳ điều gì trong hàm() đều trả về thông tin php? – eatonphil

+1

Vâng, đúng vậy. –

+0

Tuyệt vời, điều đó sẽ xóa mọi thứ! – eatonphil

6

Trong bạn PHP tập tin, sử dụng json_encode để biến mảng sang một định dạng thuận tiện hơn để sử dụng trong Javascript. Vì vậy, bạn sẽ có một cái gì đó như:

echo json_encode($myArray); 

Sau đó, trong JavaScript, các data biến của phương pháp success sẽ giữ JSON. Sử dụng jQuery parseJSON để chuyển đổi nó thành đối tượng JavaScript, sau đó sẽ rất dễ thao tác. Tôi không biết những gì bạn mảng chứa, nhưng bạn có thể làm điều gì đó như thế này:

$.ajax({ url: '/my/site', 
    data: {action: 'test'}, 
    type: 'post', 
    success: function(data) { 
     var obj = jQuery.parseJSON(data); 
     alert(obj.name[0] === "John"); 
     } 
}); 

Một lần nữa, data biến ở đây sẽ chứa bất cứ điều gì đầu ra PHP của bạn, nhưng JSON là một cách phổ biến và thuận tiện để chuyển dữ liệu trở lại với JavaScript của bạn.

3
<script type="text/javascript"> 
$.ajax({ 
    url: '/my/site', 
    data: {action: 'test'}, 
    type: 'post', 
    success: function(output) { 
     alert(output); 
    } 
}); 
</script> 

<?php 
$action = $_POST['action']; 
echo $action;?> 

Mọi đầu ra được in/lặp lại sẽ được trả về chức năng thành công. Điều này rất tiện lợi khi bạn muốn điền vào một thùng chứa html với thứ gì đó mà bạn cần để chạy trong thời gian thực.

Khi bạn nhận được điều này, một tùy chọn khác là sử dụng JSON để trả về các biến có giá trị.

+0

truy xuất định dạng html hoàn chỉnh, tôi chỉ muốn trả lại giá trị –

Các vấn đề liên quan