Ajax使用来自PHP的信息


Ajax using information from PHP

我在使用AJAX调用后从PHP文件中获得的信息时遇到了问题。我目前有以下AJAX代码,点击按钮后会触发:

<script>
    $(document).ready(function(){
        $('.button').click(function(){
            $.ajax({
                  type: "POST",
                  url: "nano.php",
                  data: { action: "authenticate" }
                }).done(function( msg ) {
                  alert( "Done: " + msg );
                });    
        });
    });
</script>

然后,在nano.php文件中,我进行了一些身份验证和信息获取。在我的PHP代码的末尾,我做了以下操作:

  print_r($member_info);
  print_r($activity_info);

这些信息(包含大量信息的两个数组)显示在Ajax done函数中调用的警报框中,这意味着这些信息在客户端是可用的。

我希望能够处理数组并在页面上显示信息。打印是发送信息的正确方式吗?在此之后,我如何处理和显示页面中数组中的信息?

要通过AJAX将数组从PHP文件发送回Javascript,请使用:

echo json_encode($array);

也适用于字符串。

并在jQuery.ajax调用中将预期的响应类型更改为json

$.ajax({
  type: "POST",
  url: "nano.php",
  dataType: 'json',
  data: { action: "authenticate" }
}).done(function( msg ) {
   alert( "Done: ");
   console.log(msg); // <- javascript array or object
 }); 

(或从PHP发送application/json内容类型标头)

正确的方法是在html中使用空标记,如<div id="response"></div>

在您的php:中

print_r(json_encode($member_info));
print_r (json_encode($activity_info));

在您的ajax调用中,使用这个div来保持ajax响应,如下所示:

 $.ajax({
                  type: "POST",
                  url: "nano.php",
                  data: { action: "authenticate" }
                }).done(function( msg ) {
                  $("#response").html(msg);
                });    

用JSON返回消息,以后在jQuery中管理它更容易。

PHP:

$data = array( 'some_var' => 'some_value' );
echo json_encode( $data );
exit;

然后在jQuery中:

<script>
$(document).ready(function(){
    $('.button').click(function(){
        $.ajax({
              type: "POST",
              url: "nano.php",
              data: { action: "authenticate" }
            }).done(function( msg ) {
                var data_object = JSON.parse(msg); // Create a Javascript object/array from the JSON
                // Here you can use the data inside the array/object
                alert( data_object.some_var );
            });    
    });
});
</script>