axios.post () возвращающий ответ, но не вставка в db [duplicate]

В моем подобном случае у меня была своя логика проверки и я просто хотел использовать проверку jQuery для отображения сообщения. Это было то, что я сделал.

//1) Enable jQuery validation
var validator = $('#myForm').validate();

$('#myButton').click(function(){
  //my own validation logic here
  //.....
  //2) when validation failed, show the error message manually
  validator.showErrors({
    'myField': 'my custom error message'
  });
});

0
задан Kris 26 February 2013 в 00:02
поделиться

2 ответа

Как упоминается в комментарии @slamborne, правильный вызов - json_decode(file_get_contents('php://input')).

То, что делает ваш звонок, на самом деле вызывает другой вызов divisions.php, поэтому вы получаете NULL (у него нет никаких данных, чтобы вернуться к вам, поскольку divisions.php ничего не выводит).

1
ответ дан 23tux 3 September 2018 в 15:28
поделиться

Прежде всего, при работе с JSON лучшим подходом является как можно больше оставить его в покое. Подумайте, если это хрупкие товары. Все, что вы сделали с ним, могут сломать его.

С учетом этого не используйте stringify (), и на самом деле вам не нужно, поскольку JQuery обнаружит его и обработает его для вас (потому что они знаю, что он хрупкий).

Во-вторых, данные опций: в методе $ ajax () должен быть задан объект. Как правило, вы бы сделали что-то подобное

data: {mydata:divisionsJSON}

Таким образом, вы можете получить доступ к JSON на бэкэнд через

$json = json_decode($_POST['mydata']); 

Или, в зависимости от того, как у вас установлен массив массивов вы можете опубликовать его как данные объекта: ищет и обращается к нему через PHP через $ _POST ['divisions_key'] = divisions_value; но это делает всевозможные проблемы позже и жесткими связывает передний конец с задним концом, который очень плох (большую часть времени, исключение ниже).

Кроме того, если вы ожидаете ответа JSON вам нужно указать, что в исходном вызове с использованием параметра dataType: «JSON», поэтому JQuery может обращаться с ним соответствующим образом.

$.ajax({
 url: "divisions.php",
 type: "post",
 data: {mydata:divisions},
 success: function(response){
   $("#result").html(response.message);
 },
 error:function(response){
  $("#result").html(response.message);
 }   
 });

Но, прежде чем мы зашли слишком далеко, эта переменная разделения в JS беспокойство. Откуда это? Это какая-то форма? Если это так, вы можете использовать serialize (), чтобы

var divisions = $('#myform').serialize();

Это создало пары key => value, где ключ - это имя поля формы, и значение (очевидно) - значение поле. Вы можете получить доступ к значениям на PHP так же, как обычно.

При рассмотрении более раннего вопроса о том, как структурирован ваш массив, это приемлемый случай размещения данных в качестве объекта. Если это форма, структура формы в любом случае будет связана с бэкэндом по необходимости, поэтому прямое использование объекта в параметрах data: это просто. Это первая концепция «оставьте ее в покое». Последний случай здесь полностью оставляет этот объект; с момента, когда он покинет DOM до момента, когда он получил обработчик, это объект в 100% случаев.

2
ответ дан Strixy 3 September 2018 в 15:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: