2011-09-15 23 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导出它。 –

相关问题