2012-11-24 73 views
0

我使用php數組測試getJSON,但它不工作,任何人都可以檢查我嗎?我覺得問題是從PHP代碼,因爲當我用getJSON url https://graph.facebook.com/zombies測試html代碼時,它正在工作。jquery getJSON php數組爲javascript

在我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> 
+1

嘗試的內容類型application/JSON – rekire

+0

它仍然沒有工作 –

+0

好吧,我必須解決我的問題, in php:echo $ _GET [「callback」]。 「(」。json_encode($ arr)。「)」; 在html:$ .getJSON('array.php?callback =?',函數(數據) 所以跨服務器可以做 –

回答

1

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

你告訴你發送它的JavaScript瀏覽器,當你在發送的是JSON。 JSON的內容類型是application/json

如果你解決了這個問題,它應該可以正常工作,只要你不會碰到Same Origin Policy。如果你正在做一個跨域請求,你的選擇是:

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

  • 使用CORS,但它要求服務器允許您的文檔的來源,並且瀏覽器支持它(大多數現代的,老年人不支持)。使用YQL as a cross-domain proxy

+0

哦...我發現我的問題,因爲我的腳本是在Ubuntu服務器中,我運行它從贏7,thx它! –

+0

我有一個問題,如果數組傳輸發生在本地和跨域,我該怎麼辦? –

+0

@jc_tan:跨域選項爲同一個領域工作。 –

3

變化

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

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

對於JSONP

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

很好的例子..... – Baba

1

試圖將內容類型設置爲

application/json 

所以jQuery將interpte作爲JSON數據