Я хочу отправить форму с помощью JQuery $.ajax
, но у меня есть проблема. Похоже, что PHP не может быть сериализован $_POST
. Странно, потому что переменная elementiPost не пуста, действительно, если я делаю console.log(parametriPost)
, консоль покажет мне правильный контент. Самое странное, что PHP получает параметры, которые я добавляю вручную к параметруPost ($_POST['data_r'])
, но не к $(this).serialize()
! Если я вручную помещаю число в $ ore, он отлично работает, поэтому проблема не в запросе.PHP не получает JQuery serialize() Параметры POST
спасибо.
Вот код:
JQuery
$('form').submit(function(e) {
e.preventDefault();
var formId = $(this).attr('id');
var data = area_get_row_date(formId);
var parametriPost = $(this).serialize() + '&data_r=' + data;
$.ajax({
url: 'insert_db.php',
method: 'POST',
async: false,
data: parametriPost,
success: function() {
// Success code
},
error: function(xhr, status, error) {
alert("Errore!");
}
});
});
PHP (insert_db.php)
$data = str_replace('_', '.', $_POST['data_r']);
$ore = $_POST['orelavorateore_2_07_2015'];
$sql = "INSERT INTO ore_lav
VALUES (NULL, 134, 4,STR_TO_DATE('" . $data . "', '%d.%m.%Y'), " . $ore . ", 1, 1)";
$results = api_store_result(api_mysql_query($sql));
Это то, что содержит parametriPost:
lavorati_prenotati=L&periodointegrazione_3_07_2015=on&orelavoratechf_3_07_2015=&orelavorateore_3_07_2015=a&extra_field1_orelavoratechf_3_07_2015=&extra_field1_orelavorateore_3_07_2015=&extra_field2_orelavoratechf_3_07_2015=&extra_field2_orelavorateore_3_07_2015=&orenonlavoratechf_3_07_2015=&orenonlavorateore_3_07_2015=&orenonlavoratetipologia_3_07_2015=L&extra_field1_orenonlavoratechf_3_07_2015=&extra_field1_orenonlavorateore_3_07_2015=&extra_field1_orenonlavoratetipologia_3_07_2015=L&extra_field2_orenonlavoratechf_3_07_2015=&extra_field2_orenonlavorateore_3_07_2015=&extra_field2_orenonlavoratetipologia_3_07_2015=L&orenonpagateore_3_07_2015=&orenonpagatetipologia_3_07_2015=L&extra_field1_orenonpagateore_3_07_2015=&extra_field1_orenonpagatetipologia_3_07_2015=L&extra_field2_orenonpagateore_3_07_2015=&extra_field2_orenonpagatetipologia_3_07_2015=L&orelavoratechf_3_07_2015=&orelavorateore_3_07_2015=&data_r=3_07_2015
базовая отладка: 'va r_dump ($ _ POST, $ _SERVER ['REQUEST_METHOD']). подтвердите, что php действительно получил эти данные и что POSt фактически был выполнен. И вы уязвимы для [sql injection attack] (http://bobby-tables.com) –
Возможно, это поможет: http://stackoverflow.com/questions/6627936/jquery-post-with-serialize-and-extra- данные – P0rnflake
'data_r = ')); DROP TABLE ore_lav; ':(В любом случае, это работает для меня -' $ _POST' содержит все поля, как ожидалось. – riv