2011-05-16 80 views
1

我有一個只能用於javascript(無PHP)的API。它獲取我製作JSON字符串的一些數據。我需要知道的是如何在其他頁面中讀取此字符串?從javascript讀取JSON到PHP

我嘗試使用以下:

$json = file_get_contents($url); 

但當然,我得到的字符串不是JSON,但實際上是JavaScript代碼,將產生原始頁面JSON。有什麼建議麼 ? 謝謝。

P.S.我也嘗試設置Cookie +重定向。雖然這有效,但我想知道更好的解決方案。

下面是javascript代碼

  function searchComplete() { 

       if (imageSearch.results && imageSearch.results.length > 0) 
       { 
        var contentDiv = document.getElementById('content'); 
        contentDiv.innerHTML = ''; 
        var results = imageSearch.results; 

        var data = "{['data' : [\n"; 

        for (var i = 0; i < results.length; i++) { 
         //var result = results[i]; 
         var result = results[i]; 

         data += "{\n"; 
         data += "'url' : '"+result.url+"'"; 
         data += "\n},\n"; 

        } 
        data += "]]}"; 
        setCookie("datajson", data, 1); // This is how i set the cookie and redirected 
        window.location = "JSPHP.php?data="+data; 

       document.getElementById('body').innerHTML = data; 
        } 
      } 
+0

你能展示Javascript的樣子嗎? – 2011-05-16 19:05:55

回答

1

好吧,你說這是不是JSON。因此json_decode()功能在這裏沒有任何附加功能。如果這發生在瀏覽器端,您可能應該使用AJAX將數據傳遞到服務器。

另外,你可以看看這個API如何工作(也許它連接到一些服務器使用JSONs交換數據?),並在PHP中執行相同的操作。

編輯:

你並不需要創建JSON對JavaScript端的字符串。 JSON本身就是JavaScript中的對象表示法。

如果你需要傳遞的數據,只是做一些類似這樣:

var data = []; 
for (var i=0; i<results.length; i++){ 
    data[] = { 
     'url': result.url 
    }; 
} 

那麼你只需要將該數據傳遞到服務器。您可以使用.get()功能(如果你需要使用GET傳遞給它)從jQuery的那樣:

jQuery.get('http://example.com/', data, function(){ 
    // something to do when successful 
}); 

這是很簡單,基本是:正確地創建數據,並把它傳遞給使用AJAX調用服務器。

+0

明白了。謝謝:) – mihsathe 2011-05-16 19:41:06

+0

不客氣:) – Tadeck 2011-05-16 20:03:36

2

PHP有它很大的模塊:

json_encode 
json_decode 
+0

mihsathe說:'我得到的字符串不是JSON,但實際上是在原始頁面生成json的javascript代碼。你想如何使用json_decode()來解析JavaScript代碼? – Tadeck 2011-05-16 19:10:06

+0

@Tadeck你是對的。這不是我想要的。 – mihsathe 2011-05-16 19:12:36

0

讓自己成爲執行javascript並保存JSON結果的網頁。然後將JSON數據發佈到PHP腳本(通過XmlHttpRequest或常規表單POST)。現在您的PHP代碼可以訪問JSON數據,您可以使用json_decode來訪問它。

+0

我嘗試使用cookie(代碼添加)相同。問題是我想從其他網站的其他(第三個)頁面訪問我的json。問題是我打電話給哪個頁面。如果我打電話給它,它就沒用了。但如果我打電話給第二位,那就沒有cookie了。 – mihsathe 2011-05-16 19:17:30

+0

雖然使用數據庫是一個選項,那將是一個恥辱..大聲笑 – mihsathe 2011-05-16 19:22:33