2011-09-29 50 views
0

創建了一個javascript小部件。有相同的原產地政策的問題。我添加回調到這樣的PHP文件:如何將json回調添加到php文件?

var jsonp_url = "http://www.example.com/widget/data.php?json_callback=?"; 
     $.getJSON(jsonp_url, function(data) { 



      for (var i=0;i<data.length-1; i++) { 

      var li = document.createElement("li"); 
      li.setAttribute("class", "top-coupon"); 


      var coupon_details = document.createElement("div"); 
      coupon_details.setAttribute("class", "coupon-details"); 
      coupon_details.innerHTML=data[i].coupon_name; 

      li.appendChild(coupon_details); 


      var image = document.createElement("img"); 
      image.setAttribute("src", "http://static.example.com/images/logos/" + data[i].logo_image); 
      image.setAttribute("class","logo-image"); 
      image.setAttribute("width","40px"); 
      image.setAttribute("height","40px"); 


      li.appendChild(image); 




      ul.appendChild(li); 

      } 
     }); 
     widget.appendChild(ul); 

現在我不知道如何將回調添加到data.php文件。這是我試過的:

 while($info = mysql_fetch_array($result)){ 

     $json = array();  
    $json['coupon_name'] = $info['label'] ; 
    $json['retailer_name'] = $info['name'] ; 
    $json['logo_image'] = $info['logo_image']; 
    $json['permalink'] = $info['permalink']; 
    $data[] = $json; 
      } 
      $data2 = json_encode($data); 
      echo $data2; 
      echo $_GET['json_callback'] . '(' . $data2 . ');'; 
+0

你爲什麼不使用'功能(數據){}''你$ .getJSON的一部分'?至少它是你的回調。 – Marco

+0

當直接在我的瀏覽器中加載data.php時,我看到數據輸出兩次。然而,小部件沒有顯示任何東西...... – PaperChase

+0

用'echo json_encode($ data)'結束你的php腳本。不要回應更多。 – Marco

回答

1

Remove echo $ data2; - 目前你的頁面生成無效的JavaScript

+0

哇!那樣做了!非常感謝。 – PaperChase

0

的Javascript:

$.getJSON("http://www.example.com/widget/data.php",function(data){ 
    // data is your JSON Object 
}); 

PHP:

$data = array(); 
while($info = mysql_fetch_array($result)) $data[]=$info; 
echo json_encode($data);