我可以将JavaScript变量传递给PHP以用作cURL函数的URL吗?

时间:2015-07-31 08:37:39

标签: javascript php jquery curl

我有一个有效的cURL功能,允许我绕过跨域问题,这是下面的代码

<?php

$url = "http://explorerapi.barratthomes.co.uk/v2.0/development/getbyitemkey?ItemKey=H618701&Auth.Utc=2015-07-31T08:30:26.761Z&Auth.RequestId=a22a17d8-8d62-4954-8a9c-79e5c244c308&Auth.DeviceId=23a5bb10-c646-47c4-8fda-1b6f1d528de3&Auth.Hash=052DAA8E425F143D4B5C55A1EAC87C5D&BrandCode=BAR&ApplicationId=ApplicationId&ApplicationVersion=1.2.3.4&LanguageCode=en-gb&IsPublished=true&MarketingSuiteDevelopmentId=MarketingSuiteDevelopmentId&UserLocation=UserLocation&Os=Android&ScreenResolution=1024x768&Hierarchical=True";

        $cu = curl_init();
        curl_setopt($cu, CURLOPT_URL, $url);
        curl_setopt($cu, CURLOPT_HEADER, false);
        curl_setopt($cu, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($cu, CURLOPT_CUSTOMREQUEST, "GET");
        curl_setopt($cu, CURLOPT_CONNECTTIMEOUT, 10);

        $result = curl_exec($cu);

        if(curl_errno($cu))
        {
            echo "<h2>Unable to connect to site</h2>";
        }

        curl_close($cu);
echo $result;

?>

当我在此处设置网址时,此工作正常。但是url是动态的,每次都不同,因此我有一个JavaScript文件,用于创建URL并将其放入变量。

我无法将JavaScript变量导入PHP,因此我可以使用该URL。我一直在尝试$_GET$_POST,但没有运气。

以下是我的Java参考资料,地址变量来自我创建URL的JavaScript文件。

<!DOCTYPE>
<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
        <script src="js/auth.js" type="text/javascript"></script>
        <meta charset="UTF-8">

    </head>
    <body>
        <script type='text/javascript'>

            var url = address;

        $(document).ready(function() {

            window.location.href = "test.php?url_=" + url;

            $.ajax({
                url: "http://127.0.0.1:4001/Barratt/test.php",
                //dataType: 'json',
                //method: 'GET',
                //contentType: 'application/json'
            })
            .done(function(data) {
                console.log(data);
                  //var response = $.parseJSON(data.contents);
                $('#value').html(data);
                  })
            .fail(function() {
                alert('failed to fetch data')
            });
        });   

        </script>
        <div style="width: 100%; height: 100%; border: 2px solid red;" id="value">

        </div>
    </body>
</html>

2 个答案:

答案 0 :(得分:1)

我想可能是因为这个:

在你的JS代码中,你需要将一个参数传递给服务器,如:

    $.ajax({
        url: "http://127.0.0.1:4001/Barratt/test.php",
        dataType: 'json',
        data:{url:'http://your.url.here'},
        //better to use post in case ur url got special characters
        method: 'POST', 
    });

然后在你的PHP代码中,你将能够使用$ _POST []获取网址:

$url = $_POST['url'];

然后我认为那样做。

答案 1 :(得分:0)

我不确定我是否正确,但我没有看到你的php脚本中使用的超级全局符号$ _GET或$ _POST。

您是否知道如果将一个值发布到php文件,它将最终出现在超级全局数组$ _POST中。 (和$ _GET相同)

所以,如果你打电话给my.php?value = test,它将会结束:

$get_value = strip_tags($_GET['value']); // The strip tags is just some safty thing
if (isset($get_Value))
     // do things with your get_value here