【问题标题】:JSON jQuery PHPJSON jQuery PHP
【发布时间】:2009-12-06 06:51:19
【问题描述】:

我不明白一件事。如果我想使用 Ajax 从 PHP 获取 JSON 数据(键值对)到 jQuery,我应该使用以下哪个?

  • $.get
  • $.post
  • $.getJSON

如果我想在 PHP 文件中使用 json_encode,是否需要使用 getJSON?但是如果我想用邮局发送(没有postJSON)怎么办?

还有一件事:

在我写的一个 PHP 文件中:

<?php
    if($_GET['value'] == "value")
    {
        $array['firstname'] = 'Johnny';
        $jsonstring=json_encode($array);
        return $jsonstring;
    }
?>

在 jQuery 文件中:

  $.getJSON("php.php", {value: "value"}, function(data){
      alert(data.firstname);
  });

为什么这不起作用?

【问题讨论】:

    标签: php jquery ajax json


    【解决方案1】:

    问题出在 PHP 中的那一行:

    return $jsonstring;
    

    你应该回显它:

    echo $jsonstring;
    

    至于使用哪种jQuery方法,如果可以返回纯json字符串,我建议$.getJSON()。这真的取决于你如何使用它。

    当使用$.getJSON() 时,您的服务器文件应该返回一个 JSON 字符串。因此,回显json_encode() 返回的字符串将适合$.getJSON() 方法接收响应。

    【讨论】:

    • 但在教程中我看到他们正在使用返回。它似乎工作..?
    • 如果我在 php 中发送多个带有 echo 的 json_encode() 值怎么办?最后一个将是 jquery 检索到的那个?
    • 这取决于浏览器。它可能会使用最后一个或第一个,或者只是出错并且什么都不使用。如果您需要这样做,最好将其全部包装到 json_encode 中:json_encode(array(json_encode($data1), json_encode($data2)));
    • 最好的办法还是把所有数据合并到一个数组中,通过json_encode解析,然后回显。
    • 只是提醒您在 AJAX 中使用 GET 非常有效。尝试谷歌搜索。我读过一篇涉及到这一点的文章。
    【解决方案2】:

    您可以使用.ajax,这允许您同时使用getpost

    【讨论】:

    • 你也可以只使用$.get$.post ;-]
    【解决方案3】:

    我总是使用 $.ajax。

    $.ajax({
         url: "script.php",
         type: "POST",
         data: { name : "John Doe" },
         dataType: 'json',
         success: function(msg){
            alert(msg);
         }
    });
    

    在 PHP 中:

    $name = $_POST['name']
    echo $name
    

    这会提醒“John Doe”

    另外,如果它不起作用,请使用 firebug 来查看传递的值。

    【讨论】:

    • post 比 get 好吗?因为我将密码值发送到 php,所以出于安全原因,post 更好?
    • 为什么他们不做一个 $.postJSON?
    • 你也可以使用$.post(url, data, callback, 'json')。当他们为您将其包装成一个不错的快捷功能时,没有理由输入所有内容。除非你打算做一些与众不同的事情。
    • @fayer - POST 或 GET 取决于您。我不知道他们为什么没有 $.postJSON @Atli: $.POST 没有“成功”、“错误”和“完成”回调。
    猜你喜欢
    • 1970-01-01
    • 2011-03-29
    • 2012-03-04
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 2012-03-27
    相关资源
    最近更新 更多