У меня есть форма, которую я отправляю, и я использую .serialize, чтобы помочь мне собрать все данные из формы. Теперь я проверил в firebug то, что отправлено в POST, и я вижу красивую форматированную строку, такую как пример
index.php?data=sth&data2=sth
но проблема в этом и в PHP - PHP выводит это так:
index.php?data=sth& a m p ;data2=sth
Видишь этот усилитель? Ну, это написано без пробелов, и это и закодированная (как я узнал в Google) версия &. Итак, что я должен сделать, чтобы правильно ввести этот URL в базу данных, а затем извлечь его и показать на сайте без этого & amp;
edit: если возможно, я бы хотел, чтобы строка с этим & была помещена в этом формате в БД. (так, со знаком &).
редактировать # 2:
как я отправляю данные:
var formData = $("#myForm :input[value]").serialize();
$.ajax({
type: 'POST',
cache:false,
url: '_ajax/updateGameInfo.php',
async: false,
dataType: 'text',
data: allData,
success: function(jsonObj) {
if (jsonObj){
$msg = 'Data sucessfully updated! Reloading page...';
alert($msg);
}
else{
$msg = 'Error with the update!';
alert($msg);
}
}
});
А вот и мое обновление GameInfo.php:
$gameRepos = new GameRepository();
$game = $gameRepos->updateGame();
echo json_encode( $game );
А если вам тоже нравится, вот моя функция updateGame из GameRepository:
public function updateGame()
{
$cleanPost = array_map( array('GameRepository', 'cleanPostData'), $_POST);
$attributes = array_keys($cleanPost);
$values = array_values($cleanPost);
$table = $this->resolveTableName( $cleanPost["selectedTypeId"] );
$id = $cleanPost["selectedGameId"];
if ($this->openConnection())
{
$pairs = "";
foreach ($cleanPost as $attribute => $value){
if ($attribute != "selectedGameId" && $attribute != "selectedTypeId"){
if ($attribute == "url")
$value = str_replace("amp;", "", $value);
$pairs .= $attribute . "='" . $value . "',";
}
}
$pairs = rtrim($pairs, ','); //remove last comma
$query = "UPDATE $table SET $pairs WHERE id=$id;";
$result = pg_query($query);
if (!$result){
mysql_error());
return false;
}
else
return true;
}
else
return false;
}