【问题标题】:why is my curl request not working what i´m i doing wrong为什么我的 curl 请求不起作用我做错了什么
【发布时间】:2019-07-31 12:20:11
【问题描述】:

我做错了什么?

我正在尝试从下拉列表中发出新的 curl 请求我做错了什么?

<form action="" method="POST">
     <div class="form-group">
        <label for="comment">Select Page:</label>
        <select class="form-control" name="pagecall" id="pagecall" style="width:75%;float:right;" onchange="davsele(this.value);">
            <?php
                $totalPage = $dataget['total'] / 20;
                for($i=1;$i<=$totalPage;$i++)
                {
                    $selc = ($getPageCount==$i)?'selected':'';
                    echo "<option value=".$i." $selc>Page No. ".$i."</option>";
                }
            ?>
        </select>
    </div>
</form>

我试图调用的函数

<?php

    function proCall() {

    $ch = curl_init();

    $getPageCount == sval;

    curl_setopt($ch, CURLOPT_URL,"https://products-export-api.g2a.com/v1/products?page=$getPageCount");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $server_output = curl_exec($ch);

        //Gets the API data
    $response = curl_exec($curl);
    $err = curl_error($curl);
    //curl_close($curl);
    $dataget = json_decode($response,true);
    print_r($dataget);
    echo "test";
    curl_close ($ch);
    }
?>

从下拉列表发送到 js 函数的内容

function davsele(sval)
{

var result = "<?php proCall();?>";
alert(result);
return false;
}

【问题讨论】:

    标签: php jquery wordpress curl php-curl


    【解决方案1】:

    您以某种方式混合了 Javascript 和 PHP,这是行不通的。您尝试在 PHP-Function 中访问 JS-Variable (sval),但这是行不通的。

    您需要使用 AJAX-Request 调用服务器上的 PHP-Function,并将 JS-Variable 作为 GET-Parameter 传递。

    因此,您应该将您的 PHP 代码放在一个文件中(例如 api.php)并在您的 JS-Function 中调用它:

    function davsele(sval) {
      var xhttp = new XMLHttpRequest();
      xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
          alert(this.responseText);
        }
      };
      xhttp.open("GET", "api.php?value=" + sval, true);
      xhttp.send();
    }
    

    api.php 的内容可能如下所示:

    <?php
        $curl = curl_init();
    
        curl_setopt($curl, CURLOPT_URL, 'https://products-export-api.g2a.com/v1/products?page=' . $_GET['value']);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    
        $server_output = curl_exec($curl);
    
        //Gets the API data
        $response = curl_exec($curl);
        $err = curl_error($curl);
        //curl_close($curl);
        $dataget = json_decode($response,true);
        print_r($dataget);
        echo "test";
        curl_close ($curl);
    ?>
    

    【讨论】:

    • 谢谢,我试过了,但是在我从下拉列表中做出新的选择后没有任何反应。
    • 您是否在 javascript 控制台中看到任何错误(使用 F12 打开)?
    • GET nerdsbelike.com/woo/wp-admin/api.php?value=6 404 davsele @ admin.php?page=woocommerce_g2a:914 onchange @ admin.php?page=woocommerce_g2a:474 ListPicker._handleMouseUp
    • 您是否将 api.php 文件上传到服务器上的文件夹“wp-admin”?大概你应该把api.php文件放在域根目录下,把js函数中的调用改成xhttp.open("GET", "/api.php?value=" + sval, true);
    • 不,我把它放在 /woo/wp-content/plugins/woocommerce-g2a/assets 好的,我会尝试的,但我认为从 wordpress 开发人员那里听到的内容不是一个好习惯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    • 2014-07-27
    • 2019-10-26
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多