2014-08-06 3 views
0

У меня есть функция javascript, которая собирает данные из некоторых полей ввода и флажков.
Я хочу отправить эти данные в файл PHP, а затем вернуть некоторую информацию из базы данных.
Но у меня проблема с получением POST-данных в PHP, поэтому здесь я остановлюсь только на этой проблеме и не буду заниматься какой-либо базой данных.

Данные, собранные в HTML форме возвращается в объект Javascript, преобразовать его в Json с помощью JSON.stringify(data) и я получаю:

{"motscle":[""],"categories":[1,2,3],"prix":[{"min":0,"max":50},{"min":50,"max":100},{"min":100,"max":200},{"min":200,"max":500},{"min":500,"max":1000},{"min":1000,"max":2000}],"dimensions":{"longueur":"","largeur":"","hauteur":""}}

Вы можете проверить его на http://jsonformatter.curiousconcept.com/, чтобы увидеть расширенную форму и чтобы увидеть, что это действительный JSON. Итак, проблема здесь не здесь.

Тогда у меня есть Ajax вызова, как, что для целей тестирования (var theJSON содержит выше JSON строку):

$.ajax({          
      url: 'post.php',       
      data: theJSON , 
      dataType: 'json', 
      error: function(){ 
       console.log("Error in ajax request"); 
      }, 
      success: function(data)   
      { 
       console.log("Success of ajax request"); 
       console.log(data); 
      } 
    }); 

Мой тестирования PHP файл post.php как то:

<?php 
    header('Content-Type: application/json; charset=utf-8'); 
    echo json_encode($_POST); 
?> 

Аякса вызов в порядке, так как я получаю это в консоли js:

Success of ajax request 
[] 

Однако, как вы можете видеть, у меня также есть пустой массив []. Я ожидал получить содержимое $ _POST, которое PHP должен был отправить мне.

Я не знаю, где я ошибаюсь. Почему я не получаю данные в $_POST?

+1

Откройте средства разработки вашего браузера и смотреть запрос/ответ в консоли. Вы должны увидеть отправленные данные и возвращенные данные. Это ваша отправная точка для устранения неполадок. –

+2

Echo '$ _GET' и посмотреть, не пусто ли это. Если GET заполняется, добавьте атрибут 'type:" POST "' в ваш вызов ajax. – Rickkwa

+0

@Rickkwa Это была проблема, thx – singe3

ответ

3

типа по умолчанию запроса AJAX является GET, либо изменить Аякс

$.ajax({          
     url: 'post.php',       
     type : 'POST', 
     data: theJSON , 
     dataType: 'json', 
     error: function(){ 
      console.log("Error in ajax request"); 
     }, 
     success: function(data)   
     { 
      console.log("Success of ajax request"); 
      console.log(data); 
     } 
}); 

или проверить ПОЛУЧИТЬ

echo json_encode($_GET); 
+0

Спасибо, что решил мою проблему. У меня также была другая проблема. На самом деле я должен отправить 'theJSON' как объект, а не как строковое представление JSON. Это потому, что JQuery обрабатывает строение, я думаю. – singe3

+0

Да, jQuery принимает объекты и массивы и строит их для вас, но также должен принимать строки, но нет необходимости строгать объекты, просто отправляйте их непосредственно при использовании jQuery – adeneo

Смежные вопросы