2014-06-18 72 views
0

我想验证使用ajax请求到服务器的文本输入字段中输入的值,但是当我尝试访问帖子或获取数据时,它们都是空数组。发布或从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>'; 
} 

两者都是空的阵列。没有帖子或获取数据。该网站是一个笨网站,所以在路由我有:

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

我也曾尝试:

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

任何想法,为什么没有发布数据?

回答

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处理。

+0

是的工作。谢谢! 我想我正在阅读关于JQuery中.ajax方法的文档,因为它声明数据可以是对象或字符串。 http://api.jquery.com/jquery.ajax/ – Malchesador

+0

它可以。你可以传入一个预先创建的字符串,但是当它到达PHP时,它仍然必须等同于'key = value&key = value'类型的东西。 –

+0

对,我知道,或者至少应该知道经过12多年的编码! :P – Malchesador

1

如果使用会发生什么,而不是

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

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