【问题标题】:Ajax using information from PHPAjax 使用来自 PHP 的信息
【发布时间】:2015-02-10 22:16:26
【问题描述】:

我在使用 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函数中调用的alert框中,表示这个信息在客户端是可用的。

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

【问题讨论】:

    标签: javascript php jquery ajax


    【解决方案1】:

    要通过 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 内容类型标头)

    【讨论】:

      【解决方案2】:

      执行此操作的正确方法是在您的 html 中使用空标记,例如 &lt;div id="response"&gt;&lt;/div&gt;

      在你的 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);
                      });    
      

      【讨论】:

        【解决方案3】:

        以 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>
        

        【讨论】:

          猜你喜欢
          • 2013-07-14
          • 1970-01-01
          • 2013-11-27
          • 2019-09-21
          • 2019-04-04
          • 1970-01-01
          • 2013-11-28
          • 2011-08-22
          • 1970-01-01
          相关资源
          最近更新 更多