Я пробовал снова и снова, и он никогда не работает. Я не знаю, как получить JSON на стороне сервера.Как отправить JSON на PHP через AJAX?
JS
function newReport_compilation(){
...
return JSON.stringify(formData);
}
var formData = newReport_compilation(); //takes all values from my form
...
$("#newReport_submit").on('click',function(){
ajaxRequestTwo("databaseButler.php?reqType="+2, "text", formData, function(returnedData){
console.log(returnedData); //To test
...
}}
function ajaxRequestTwo(reqScript, returnDataType, reqData, callback){
$.ajax({
type: "POST",
dataType: returnDataType,
url: reqScript,
data: {fData:reqData},
contentType: 'application/json; charset=UTF-8',
success: function(data) {
console.log("AJAX request success.");
callback(data);
},
fail: function(){
console.log("AJAX request failed.");
},
error: function(){
console.log("Error!");
}
});
}
PHP (DatabaseButler.php)
function reportInsert(){
def();
//Establish a new connection
$repInsCon = new Db();
//Run the insertReport function from the DB class (Send it the report ID & the JSON data of the submitted form)
$result = $repInsCon->insertReport($_POST['fData']);
echo $result;
}
if(isset($_GET['reqType'])){
...
}else if($_GET['reqType']=="2"){
reportInsert();
}
}
Deeper PHP (в Дб() класс)
public function insertReport($jsonForm){
$newRepData = json_decode($jsonForm,true);
echo $jsonForm;
... //I have the SQL INSERT query part commented out here but I can't get here regardless
}
Это дает мне ошибку говоря Примечание: Undefined индекс: FData в C: \ WAMP \ WWW \ HCSProjects \ Pigeon \ Main \ databaseButler.php
Я не понимаю, как вы получите данные в формате JSON на PHP боковая сторона? Что называется JSON, когда он достигает PHP? Как я могу получить его правильно на стороне сервера? :/
Я занимаюсь этим часами. Нет никакого правильного ответа нигде.
UPDATE
Запрос AJAX прекрасно работает, потому что я получаю 4 и 200 на ответ. Следующая строка в файле butler.php является проблемой: (Я удалил reqType кстати .... я только что сделал url databaseButler.php без дополнительных параметров).
if(isset($_POST['req'])){
'req' в приведенной выше строке является одним из моих значений JSON. Я console.logged JSON, прежде чем я отправил его на PHP. (My JSON is reqData. I console.logged formData, что то же самое)
{"id": "1615", "na": "Y", "ph": "905-525-9140", " «em»: «[email protected]», «dep»: «Резиденция», «req»: «Проблемы с ПК», «cus»: «», «summ»: «diwjdiwjdi», «det»: », "ИРП": "Low", "Дат": "07/08/2015", "ти м": "в любое время"}
Это моя функция newReport_compilation кстати:
function newReport_compilation(){
var formData = {id:hash(1),na:$("#newReport_name").val(),ph:$("#newReport_phone").val(),em:$("#newReport_email").val(),dep:$("#newReport_department").val(),req:$("#newReport_requestCategory").val(),cus:$("#newReport_otherRequest").val(),summ:$("#newReport_summary").val(),det:$("#newReport_details").val(),pri:$("input[type='radio'][name='priority']:checked").val(),dat:$("#newReport_date").val(),tim:$("#newReport_time").val()};
return JSON.stringify(formData);
}
Как получить значения JSON на стороне PHP? Там нет никакой помощи в любом месте, ребята:/
UPDATE: НАШЕЛ РЕШЕНИЕ
Для тех, кто заинтересован:
Проблема была JSON.stringify (FormData) в newReport компиляции. По-видимому, вам не нужно форматировать formData, если она была сохранена в форме JSON. Это было похоже на то, что я попытался преобразовать уже JSON-строку в JSON, которая сломала ее.
Кроме того, когда вы отправляете данные как в URL-адресе, так и в форме JSON, обращайтесь ко всем, используя $ _REQUEST, а не $ _POST или $ _GET. Однако любые данные JSON, которые вы отправляете, проходят в формате, который вы отправляете. В моем случае я использовал POST. Таким образом, чтобы получить идентификатор или имя или серверную часть (DatabaseButler PHP), вы должны использовать $ _POST ['id'] или $ _POST ['summ'].
отправка POST .... поиск GET ... не доставит вас очень далеко – charlietfl
Я использовал $ _POST ['fData']. Что вы имеете в виду? @charlietfl – ykadaru
Сделайте 'var_dump ($ _ REQUEST)' в файле reportInsert.php и сообщите нам, что у него есть. – Bankzilla