【问题标题】:Jquery getJSON php array to javascriptJquery getJSON php数组到javascript
【发布时间】:2012-11-24 17:34:42
【问题描述】:

我正在使用 php 数组测试 getJSON,但它不起作用,谁能帮我检查一下?我觉得问题出在 php 代码上,因为当我使用 getJSON url https://graph.facebook.com/zombies 测试 html 代码时,它正在工作。

在我的array.php中

<?php

 header("Content-type: text/javascript");

 $arr = array(

            "name" => "Tim",
            "age" => "28"     );

echo json_encode($arr);

?>

在我的 test.html 中:

  <html>
  <head>
    <script type='text/javascript' src='jquery.js'></script>
  </head>
  <body>

    <script type='text/javascript'>

    $(document).ready(function() {
         $.getJSON('array.php', function(data) {        
            if(data) {
            document.write(data.age);       
            }
            else {
            alert('error');
            }
        });
    }); 
    </script>

   </body>
   </html>

【问题讨论】:

  • 试试内容类型application/json
  • 好的,我已经解决了我的问题,在 php 中: echo $_GET["callback"] 。 "(" . json_encode($arr) . ")";在 html 中: $.getJSON('array.php?callback=?', function(data) 这样就可以跨服务器了

标签: php javascript jquery getjson


【解决方案1】:

改变

header("Content-type: text/javascript");

header('Content-Type: application/json');

对于 JSONP

header('Content-Type: application/javascript');

【讨论】:

    【解决方案2】:

    header("Content-type: text/javascript");

    当你发送的是 JSON 时,你是在告诉浏览器你正在向它发送 JavaScript。 JSON 的内容类型是application/json

    如果你解决了这个问题,它应该可以工作,前提是你没有与Same Origin Policy 发生冲突。如果您提出跨域请求,您的选择是:

    • 不要使用 ajax 和 JSON,使用JSON-P

    • 使用CORS,但它要求服务器允许您的文档的来源,并且浏览器支持它(大多数现代的支持,旧的不支持)。

    • 使用YQL as a cross-domain proxy

    【讨论】:

    • 哦...我发现了我的问题,因为我的脚本在 Ubuntu 服务器内,我从 win 7 运行它,谢谢!
    • 我有一个问题,如果数组传输发生在本地和跨域,我该怎么办?
    • @jc_tan:跨域选项也适用于同一个域。
    【解决方案3】:

    尝试将内容类型设置为

    application/json
    

    所以 jQuery 将作为 json 数据进行解释

    【讨论】:

      猜你喜欢
      • 2011-03-27
      • 2014-02-22
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 2011-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多