2011-09-15 31 views
0

我有一個php文件,它訪問memcache並獲取存儲的javascript代碼。這個文件然後迴應js內容。我正在使用iFrame來訪問此文件。但是現在有一個需要獲得這個JS代碼而不使用iFrame。我正在考慮進行AJAX調用並獲取該js代碼。問題是,該PHP文件是跨域。我瞭解到ajax無法運行跨瀏覽器。 JSONP有答案。但我不知道語法。我查了很多文件,但無法弄清楚如何去做。如何從JSONP獲取jQuery中的JavaScript代碼

這是我的PHP文件memcacheJs.php:

$id  = $_GET['mc_id']; 
$js_code = $memcacheRW->get($id); 
echo   $js_code; 
$memcacheRW -> delete($id); 

我要調用這個文件,發送mc_id,拿到js_code作爲Ajax響應。我試過這個代碼的jquery:

var jsCode  = "js_code="+_cO.cmK[keyword].ad[0][4]; 
var crossDomURL = "http://ph.cm.shades1ld1/frame2.php"; 

$pH.getJSON(crossDomURL+"&callback=?", function(data) {alert(data);}); 

但它不工作,該怎麼辦? 請幫忙

回答

1

你必須匹配回調函數,看看jsonpCallback參數。這是一個使用jsonP(簡化)的工作示例。

$.ajax({ 
     url: "/myUrl.php", 
     data: { 
      'date' : '2011-01-01', 
      'specie' : 'cervus' 
     }, 
     dataType : 'jsonp', 
     jsonpCallback: 'onModify', 
     success: function(data){ 
      console.log(data); 
      return false; 
     } 
    }); 

//the php code 
$data = array('some', 'values', 'in','response'); 
echo "onModify(". json_encode($data).")"; 
+0

還有一個疑問,我將接收的數據將是一個JavaScript代碼。那麼是否需要定義dataType? – Shades88

+0

是的,你需要。其實你應該收到的數據爲JSON,這是JavaScript的一個子集,不是100%的JavaScript,你應該從PHP使用json_encode導出它。 –

相關問題