проблема с AJAX POST не обновляет базу данных MySQL - PullRequest
0 голосов
/ 11 сентября 2011

У меня есть форма, которую я вызываю через AJAX (для использования в CMS), а затем эта форма используется для обновления базы данных контента, однако она не работает, и я не могу понять, где.

Все это работает до отправки, так как в полях все правильно заполнены строками базы данных, столбцами и т. Д., А данные предварительно заполнены тем, что есть в настоящее время.Проблема находится где-то между функцией AJAX submit () и MySQL-запросом eupdate.php.

eform.php (перенаправляется на другую страницу, eindex.php, которая будет отображаться)

<?php
require("../mcfrdb.php");
// Included database once using the require method

$item = $_POST['item'];
$page = $_POST['page'];

$row = mysql_query("SELECT * FROM mcfr WHERE pageid = '$page'");
$data = mysql_fetch_array($row);
?>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript">    </script>
<script type="text/javascript">var $j = jQuery.noConflict();</script>

<script type="text/javascript">

function submit(){
$j.ajax({ 
type:"POST",
url:"eupdate.php", 
data: "item=" + $j('#item') + "&itemcont=" + $j('#itemcont') + "&page=" + $j('#page'),
success:function(response){ 
    $j("#msg").html(response); 
    }
}); 
}

</script>
<div id="msg"></div>
<form id = "edititem" name = "edititem" onsubmit="return false;" method="post" >
<textarea cols="20" rows="5" name="itemcont" id="itemcont"><? echo $data[$item]; ?></textarea>    <br/>
<input type="text" name="item" id="item" value="<? echo $item; ?>"><br/>
<input type="text" name="page" id="page" value="<? echo $page; ?>"><br/>
<input type="button" value="make changes" onclick="submit()" >
</form>

eupdate.php

<?php
require("../mcfrdb.php");
// Included database once using the require method

$item=$_POST['item'];
$page=$_POST['page'];
$newcont=$_POST['itemcont'];

$row = mysql_query("UPDATE mcfr SET '$item' = '$newcont' WHERE pageid = '$page'");  

?>

Когда я нажимаю кнопку «Отправить», после проверки моей БД после этого ничего не изменилось или не обновилось.

Заранее спасибо за все ответы, надеемся, что мыможно исправить это :) Ура

1 Ответ

2 голосов
/ 11 сентября 2011

Поскольку вы отправляете свои данные с помощью AJAX, вам не нужно использовать элемент form (тем более, что он требует от вас дополнительных действий, чтобы предотвратить его нормальную отправку).

В любом случае, основная проблема, вероятно, заключается в том, как вы (не) получаете значения полей. $j('#item') возвращает объект jQuery, привязанный к входу item, а не его значение. Чтобы получить значение, используйте метод .val(), например: $j('#item').val().

В качестве примечания, вам также необходимо экранировать опубликованные данные в вашем PHP-сценарии, прежде чем использовать их в каких-либо SQL-запросах, в противном случае вы уязвимы для некоторых ужасных атак с использованием SQL-инъекций. См. Документацию mysql_real_escape_string для объяснения: http://php.net/manual/en/function.mysql-real-escape-string.php

...