2012-06-16 116 views
2

以下是我測試JSONP的方式:我運行XAMPP,並在文件夾htdocs中創建一個javascript文件夾。我創建了json1.json文件包含一些要處理的數據。Javascript:如何測試本地主機上的JSONP

在那之後,我在本地運行這個HTML文件,它會調用在「其他機器」功能(在這種情況下是localhost

這是我在這個問題代碼:

<head> 
    <script> 
      function updateSales(sales) { 
       alert('test jsonp'); 
       // real code here 
       } 

    </script> 

    </head> 
    <body> 
     <h1>JSONP Example</h1> 
     <script src="http://localhost:85/javascript/json1.json?callback=updateSales"></script> 
    </body> 

但是當我跑步時,什麼都沒有發生。但如果在互聯網上更改爲其他真正的JSON,它將起作用。這意味着變線:

<script src="http://localhost:85/javascript/json1.json?callback=updateSales"></script> 

到行:

<script src="http://gumball.wickedlysmart.com/?callback=updateSales"></script> 

它會工作的順利開展。

所以,我不知道如何使用本地主機測試JSONP,請幫助我。

謝謝:)

回答

2

JSONP是在服務器端生成的。服務器獲取數據,將其編碼爲JSON,然後圍繞它打包函數調用。

所以你的情況,你可以修改你的.json文件的方式如下:

updateSales({ /* your data */ }); 

然而,這將有一個硬編碼回調方法,所以它不會對你在檢索它做的變化作出反應。

另一種方法是編寫一個小的PHP包裝器(或者使用任何你喜歡的東西),然後將這個函數添加到JSON中,然後再發送回客戶端。

<?php 

    $json = file("path/to/your/json"); 

    echo $_GET['callback'], '(', implode('', $json), ');'; 

?> 

(後來的代碼是絕不對任何生產使用,但僅限於本地測試!)