我有一個問題,因爲在服務器端(當我通過AJAX發送給它時)總是缺少一個參數(超出2個)。Ajax/PHP/Json:一個GET參數丟失
我的JS代碼如下所示:
function import_websql(user_id) {
var db = openDatabase("database", "1.0", "table", 2*1024*1024);
var favourite_ids = "";
if (window.openDatabase){
db.transaction(
function(t){ // This is the callback with "t" as the transaction object
t.executeSql('SELECT * FROM favourites', [], function (t, results) {
var len = results.rows.length, i;
for (i = 0; i < len; i++) {
favourite_ids += results.rows.item(i).id + "t";
}
});
}, onError, onReadyTransaction(user_id,favourite_ids)
);
} else{
alert("Your smartphone is too weird!");
};
}
function onReadyTransaction(user_id,favourite_ids) {
alert(favourite_ids);
send_websql(user_id,favourite_ids)
}
function onError() {
alert("error");
}
function send_websql(user_id,favourite_ids){
$.ajax({
url: 'fct.import_websql.php',
type: 'GET',
data: {user_id: user_id, favourite_ids: favourite_ids},
dataType: 'json',
beforeSend: function(){
},
success: function(data)
{
if(data) {
alert(favourite_ids + "Worked!" + data);
}
else {
console.log("Error: " + data);
}
},
complete: function(data){
},
error: function(xhr,textStatus,err)
{
console.log("readyState: " + xhr.readyState);
console.log("responseText: "+ xhr.responseText);
console.log("status: " + xhr.status);
console.log("text status: " + textStatus);
console.log("error: " + err);
}
});
}
我的PHP樣子:
<?php
include_once('database_connect.php');
include_once('clean.php');
$user_id = clean($_GET['user_id']);
$favourite_ids = clean($_GET['favourite_ids']);
$favourite_ids_arr = explode('t', $favourite_ids);
array_pop($favourite_ids_arr);
foreach ($favourite_ids_arr as &$favourite_id) {
$sql = "INSERT INTO map_favourite_user_bookmark (map_favourite_user_bookmark_favourite_id, map_favourite_user_bookmark_user_id) VALUES ($favourite_id, $user_id)";
$result = mysql_query($sql) or die(mysql_error());
$sql = "UPDATE user_info SET user_websql_imported = 1 WHERE user_id = $user_id)";
$result = mysql_query($sql) or die(mysql_error());
}
$response = "ok" . $favourite_ids;
echo json_encode($response);
?>
「搞笑」的事情是,在JS端之前,我發送數據所需的一切存在(並會是alerted
),但在PHP方面favourite_ids
完全缺失(不能echo
他們,不能處理他們,他們不會被退回......就像他們不存在)。
我在做什麼錯了?
$ recipe_ids \ $ favourite_ids搞砸了變量重命名 – 2014-01-14 20:18:13
正確**爲什麼**你是否在用't'分隔的字符串時,你可以很容易地發送一個json編碼的ARRAY給客戶端?這會消除任何需要構建字符串/爆炸的需求,加上你的字符串自然包含't'的機率,這會導致爆炸將錯誤的位置分解。 –
@Dagon謝謝你,但我最近改變了他們。在我的代碼中,它們都具有相同的變量名稱,這不是問題! –