2014-06-18 73 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); 
}); 

數據元素應該是一個對象,而不是一個標量。