0

嗨,我在这里遇到问题这是我的代码,当我编写“http://localhost”并检索内容时它可以工作,但是当我编写其他网站(如“http://www.google.com”)时它不起作用。我已经在我的虚拟主机中上传了代码供你们测试。链接在这里。http://faceproishere.netii.net/test.php 在这里你可以看到我的代码:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
</head>

<body>
<input type="text" name="field1" id="field1" value="http://localhost">

<input value="load" type="button" onClick="my_function()">


<textarea cols="15" rows="12" id="frame1" style="float:left"></textarea>
<div id="frame2" style="width:400px;height:400px;overflow:scroll;fl  oat:left"></div>


<script type="text/javascript">
function my_function()
{
    if($("#field1").val() != '' && $("#field1").val().indexOf("http",0) == 0)
    {

        $.get($("#field1").val(),function(data)
        {
            $("#frame1").html(data)
            $("#frame2").html(data)
        })

    }
}
</script>
</body>
</html>

提前Tnx。

4

2 回答 2

3

您不能以这种方式从其他来源访问内容。出于安全原因,这是不允许的。另见: https ://developer.mozilla.org/en-US/docs/Same_origin_policy_for_JavaScript

如果您检查浏览器的控制台,您可以很容易地看到此类问题。

于 2012-08-26T07:22:15.547 回答
0

如果您有权访问 curl,但您可以设置对 curl 的调用以检索数据或地址。

curl 是大多数 Linux 发行版上可用的 bash 工具。可以在这里找到http://curl.haxx.se/

您所做的是通过 ajax 设置本地请求,将结果传递到您使用 curl 获取的站点。在大多数脚本语言中,Curl 可以通过 shell 调用。如果您安装了 curl 并且需要脚本方面的帮助,请告诉我什么语言,我可能会提供帮助。

好吧,她是一个解释。当我这样做时它可能不适合你,它是在 ruby​​ sinatra 中,它非常容易设置路径和捕获链接的参数。在php中可能会更难一些。

首先,您需要一些方法来设置调用使用 curl 的 php 脚本的本地路径。最简单的方法是简单地将文件添加到您的网络路径(取决于网络服务器和框架)。

在 curl_test.php 文件中,您可以执行以下操作:

$response = system('curl www.google.se', $returnvalue);
echo($response)

然后,您将设置您的 ajax 请求以运行该脚本,如下所示:

$.ajax({
  url: "localhost/curl_test.php",
  data: data,
  success: success,
  dataType: dataType
});

然后诀窍是如何将正确的数据放在数据部分中,以便您可以将获取变量发送到 curl 脚本,但是如果您想要一个 ruby​​ sinatra 示例,我会让您解决这个问题。

get '/data/:brand' do
  data_link =  "https://someplace.com/brands/#{params[:brand]}"
  c = Curl::Easy.perform(data_link)
  content_type :json
  c.body_str
end
于 2012-08-26T07:32:44.753 回答