2013-01-10 51 views
0

Im我的數據在ajax.php中消毒有困難。這裏是我的js.js的代碼:在php中的Ajax數據,消毒一個數字

$('.vote_pagelink').click(function() { 
var aid = this.id; 

$.ajax({ 
     type: "POST", 
     url: 'http://localhost/lr/ajax.php', 
     data: "voteid=" + aid + "&tid=" + config.topic_id, 
      success: function(data){ 
      var test= data; 
      alert("Data Saved: " + test); 
      }, 
         error: function(data){ 
       alert("error: "); 
     }    
    }); 
return false; 
}); 

和我的ajax.php:

$post = $_POST; 
if (ctype_digit(json_encode($post['tid']))) {        
echo json_encode($post['tid']); 
} 

爲什麼慣於這項工作?有沒有「隱藏」的數據?如果我刪除if條件,它只會發出一個數字。

+0

如果您使用JSON對象進行回覆,則首先需要將回復頭設置爲「application/json」。 – StuR

回答

2

只是嘗試刪除「json_encode」之後 -

因爲編碼它會不會號碼,以便將返回false後;

$post = $_POST; 
if (ctype_digit($post['tid'])) { 
echo json_encode($post['tid']); 
} 
+0

那就是我第一次嘗試的東西。返回/警告的數據只是:「數據保存:未定義」。 – villeroy

0

ctype_digit函數檢查字符串中的所有字符是否爲數字。當你的值爲json_encode時,它返回值的json表示。例如:

$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); 
echo json_encode($arr); 
//produces the output 
{"a":1,"b":2,"c":3,"d":4,"e":5} 

所以你不能真正在json_encoded表示上使用ctype_digit。相反,您的代碼應該採用以下格式:

ctype_digit($post['tid'])