AJAX API请求缺少控制器$ _GET上的某些数据

时间:2018-07-07 04:36:12

标签: php ajax codeigniter-3

当我尝试通过ajax请求向API发送数据(url)时,PHP CI控制器未考虑$ _GET中的所有参数。它只接受&。

传递参数时是否有错误?请帮忙。我尝试传递直接url和encodeURI。

jQuery代码

$.ajax({
        type: "GET",
        url: "<?= ROOT?>welcome/ajaxapiget",
        data: encodeURI(http://localhost/webapi/list?categories[]=3&categories[]=12),
        cache: false,
        success: function (data) {
            alert(data);
        }
    });

PHP

function ajaxapiget() {
    $url = $_GET;`//its getting url as http://localhost/webapi/list?categories[]=3`
    $curl = curl_init();
    ........
    ........
    response $response;
}

也尝试过这样

$.ajax({
        type: "GET",
        url: "<?= ROOT?>welcome/ajaxapiget",
        data: 'url=http://localhost/webapi/list?categories[]=3&categories[]=12)',
        cache: false,
        success: function (data) {
            alert(data);
        }
    });

PHP

function ajaxapiget() {
    $url = $_GET(url);`//its getting url as http://localhost/webapi/list?categories[]=3`
    $curl = curl_init();
    ........
    ........
    response $response;
}

当我提醒

发送请求之前

url=http://localhost/webapi/courselist?categories[]=15&categories[]=17

来自控制器的响应(警告ajax成功)

$url = $_GET('url');
echo $url

警报响应

http://localhost/webapi/courselist?categories[]=15

2 个答案:

答案 0 :(得分:0)

尝试一下

jQuery代码

$.ajax({
        type: "GET",
        url: "<?= ROOT?>welcome/ajaxapiget",
        data: {url:'http://localhost/webapi/list?categories[]=3&categories[]=12'},
        cache: false,
        success: function (data) {
            alert(data);
        }
    });

PHP代码

function ajaxapiget() {
    $url = $this->input->get('url');//Getting $url as http://localhost/webapi/list?categories[]=3&categories[]=12
    $curl = curl_init();
    ........
    ........
    response $response;
}

在Codeingiter中使用$this->input->get()代替$_GET[]

答案 1 :(得分:0)

最后我用encodeURIComponent

解决了这个问题
$.ajax({
    type: "GET",
    url: "<?= ROOT?>welcome/ajaxapiget",
    data: 'url=http://localhost/webapi/list?' + encodeURIComponent('categories[]=15&categories[]=17'),
    cache: false,
    success: function (data) {
        alert(data);
    }
});

现在的结果是

http://localhost/webapi/courselist?categories[]=15&categories[]=17
  

encodeURIComponent将使用特殊含义对所有内容进行编码,因此您   将其用于URI的组成部分

来源:https://stackoverflow.com/a/4540785