我想使用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";
为什么没有发布数据的想法?
答案 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);
});
数据元素应该是一个对象,而不是标量。