【问题标题】:JQuery + Json - first steps with an exampleJQuery + Json - 示例的第一步
【发布时间】:2010-10-22 18:38:02
【问题描述】:

我需要(最近)在 jquery 创建的 ajax 调用之后从服务器获取一个数组。我知道我可以使用 JSON 来做到这一点。但我不知道如何用 JQuery 来实现它(我是 JSON 新手)。我尝试在互联网上搜索一些示例,但没有找到。

这是代码:

// js-jquery function
function changeSponsor() {
    $.ajax({
        type: 'POST',
        cache: false,
        url: './auth/ajax.php',
        data: 'id=changespon',
        success: function(msg) {
            // here i need to manage the JSON object i think
        }
    });
    return false;
}

// php-server function
if((isset($_POST['id'])) && ($_POST['id']=="changespon")) {
    $linkspon[0]="my ";
    $linkspon[1]="name ";
    $linkspon[2]="is ";
    $linkspon[3]="marco!";

    echo $linkspon;
}

实际上,我需要在 ajax 调用之后获取数组 $linkspon 并对其进行管理。怎么办?我希望这个问题很清楚。谢谢

编辑

好的。这现在是我的 jquery 函数。我添加了 $.getJSON 函数,但我认为在错误的地方:)

function changeSponsor() {
    $.ajax({
        type: 'POST',
        cache: false,
        url: './auth/ajax.php',
        data: 'id=changespon',
        dataType: 'json',
        success: function(data) {
            $.getJSON(url, function(data) { alert(data[0]) } ); 
        }       
    });

    return false;
}

【问题讨论】:

    标签: php jquery arrays json


    【解决方案1】:

    你需要做两件事。

    1. 您需要先将您的数组转换为 JSON,然后再将其输出到 PHP 中。假设您拥有最新版本的 PHP (5.2+),这可以使用 json_encode 轻松完成。 JSON 使用命名键/值对而不是数字索引也是最佳做法。
    2. 在您的 jQuery .ajax 调用中,将 dataType 设置为“json”,以便它知道预期的数据类型。

      // JS/jQuery
      function changeSponsor() {
          $.ajax({
              type: 'POST',
              cache: false,
              url: './auth/ajax.php',
              data: 'id=changespon',
              dataType: 'json',
              success: function(data) {
                  console.log(data.key); // Outputs "value"
                  console.log(data.key2); // Outputs "value2"
              }
          });
          return false;
      }
      
      
      // PHP
      if((isset($_POST['id'])) && ($_POST['id']=="changespon")) {
          $linkspon["key"]= "value";
          $linkspon["key2"]= "value2";
          echo json_encode($linkspon);
      }
      

    【讨论】:

    • 是的......这太棒了!我只是发送一个带有 0,1,....n 索引的数组,然后我在 jquery 上用 data[0], data[1], ... data[n] 管理它!谢谢人:)
    【解决方案2】:

    1) PHP:你需要在你的数组上使用 json_encode。

    例如

    // php-server function 
    if((isset($_POST['id'])) && ($_POST['id']=="changespon")) { 
        $linkspon[0]="my "; 
        $linkspon[1]="name "; 
        $linkspon[2]="is "; 
        $linkspon[3]="marco!"; 
    
        echo json_encode($linkspon); 
    }
    

    2) 查询:

    use $.getJSON(url, function(data) {   whatever.... } );
    

    数据将以 JSON 格式传回。在您的情况下,您可以访问“我的”数据[0];

    【讨论】:

    • 我尝试使用此代码,但我认为我在错误的地方使用它。查看上面的代码;)感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2016-05-01
    • 2011-09-19
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 2011-08-10
    相关资源
    最近更新 更多