jQuery“load()”无法加载PHP“curl_exec()”结果

时间:2012-02-27 11:14:19

标签: php javascript jquery

我想要一个HTML文件来加载PHP文件的“curl_exec()”方法的结果。

PHP文件位于localhost中,HTML文件可以位于任何位置。

例如,PHP文件名是“curl.php”。

我使用jQuery“load()”来加载结果,但即使我将文件上传到Web服务器后它也无法正常工作。

HTML文件代码:

http://jsfiddle.net/aTkEZ/

“curl.php”代码:

http://jsfiddle.net/Quk8N/

我的代码出了什么问题?

2 个答案:

答案 0 :(得分:2)

首先,您应该为该cURL调用设置一些参数,如下所示:

<?php
  $ch = curl_init();
  curl_setopt($ch,CURLOPT_URL, "http://antithesiscomedy.com/");
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 10);
  $html = curl_exec($ch);
  curl_close($ch);
  echo $html;
?>

根据您尝试获取来源的网站,应考虑添加标题和使用者。

通过在浏览器中打开文件来测试cURL,看看它是否返回页面,然后继续查看是否可以使用Ajax获取它。

尝试用$ .ajax

替换该加载函数
$.ajax({
   url: "/curl.php",
   type: "POST",
   dataType: "html",
   success: function(data) {
      $(document).html(data);
   }
});

看看是否有效?

答案 1 :(得分:1)

通过javascript的AJAX请求通常绑定到同源策略。这意味着除非浏览器认为正在获取的页面与当前正在执行的页面位于同一服务器上,否则它将返回错误。

要查看是否返回错误,您应该添加如下回调:

$('#content').load(url, function (data, error) {
    // check the error parameter to see if there was an
    // error and react accordingly
});

使用localhost可能存在与原始策略相同的问题,或者至少我在localhost中遇到了与原始策略相同的问题。尝试将文件上传到某个地方的实际主机。