发布或获取ajax请求中不存在的数据

时间:2014-06-18 18:03:55

标签: javascript php jquery ajax codeigniter

我想使用ajax请求验证在文本输入字段中输入的值,但是当我尝试访问帖子或获取数据时,它们都是空数组。

html输入:

<input type="text" name="club_key" id="club_key" class="form-control" onblur="verifyKey(this);">

JavaScript:

function verifyKey(ev)
{
    var url = '/index.php?/orders/key';
    // url = encodeURIComponent(url);

    $.ajax({
        cache: false,
        url: url,
        type: "POST",
        data: ev.value
    }).done(function(response) {
        alert(response);
    });

服务器端PHP:

public function check_key()
{
    echo '<pre>';
    echo "Clubbbed to death: ";
    // print_r($this->input->get_post());
    print_r($_GET);
    print_r($_POST);
    echo '</pre>';
}

两者都是空数组。没有帖子或获取数据。该站点是CodeIgniter站点,因此在路由中我有:

$route['orders/key']    = "orders/check_key";

我也尝试过:

$route['orders/key/(:any)'] = "orders/check_key/$1";

为什么没有发布数据的想法?

2 个答案:

答案 0 :(得分:2)

PHP希望表单提交(通过get和post)采用key = value格式。您的data: ev.value只是一个值:ev.value。由于没有密钥,PHP无法将任何内容放入$ _GET或$ _POST,因为所有数组条目都必须有密钥。

尝试

data: {foo: ev.value}

然后

$_POST['foo']

或者,您可以尝试

$value = file_get_contents('php://input');

将直接从输入中读取该字符串,但它将被PHP完全取消处理。

答案 1 :(得分:1)

如果使用,会发生什么?

$.ajax({
    cache: false,
    url: url,
    type: "POST",
    data: { club_key : jQuery('#club_key').val() }
}).done(function(response) {
    alert(response);
});

数据元素应该是一个对象,而不是标量。