2016-09-20 2 views
1

Я пытаюсь собрать рабочую демонстрационную версию (включая mysql) формы, которая использует jquery для сериализации данных формы и php для извлечения данных, чтобы их можно было передать в mysql-запрос.Не удается получить форму обновления Ajax для работы с unserialize

Форма, похоже, корректно размещает данные, но я не уверен, как настроить скрипт обработки, который видит $ _POST для несериализации данных, чтобы передать его в mysql. Вы можете увидеть демо на http://www.dottedi.biz/demo/code/ajax/serialize.

Я попытался с помощью:

$data=unserialize($_POST['data']); 

для десериализируются данных, но он возвращается пустым. Простой print_r ($ _POST); возвращает данные массива из формы. Вы можете видеть, что если вы протестируете демоверсию. Предложения, пожалуйста?


Добавлена ​​информация - содержимое файла script.js:

$(document).ready(function() { 
    $('form').submit(function(evt) { 
    evt.preventDefault(); 
    $.each(this, function() { 

     var input = $(this); 
     var value = input.val(); 
     var column = input.attr('name'); 
     var form = input.parents('form'); 
     var linked_col = form.find('#associated').attr('name'); 
     var linked_val = form.find('#associated').val(); 

     // var serializedData = $(this).serialize(); 

     $("#Status").html(""); 

     $.ajax({ 
     url: "update.php", 
     data: { 
      val: value, 
      col: column, 
      id: linked_col, 
      id_val: linked_val 
     }, 
     type: "POST", 
     success: function(html) { 
      $("#Status").html(html); 
     } 

     }); 
    }); 
    }); 
}); 

9/22 - укороченные script.js

$(document).ready(function() { 
    $('form').submit(function(evt) { 
    evt.preventDefault(); 
    $.each(this, function() { 

     $("#Result").html(""); 

     $.ajax({ 
     url: "update.php", 
     data: $('form').serialize(), // works to post data 
     type: "POST", 
     success: function(html) {   
      $("#Result").html(html); 
     } 

     }); 
    }); 
    }); 
}); 

комментарий - я тестировал, и кажется, что одни и те же данные публикуются с использованием сериализации как указано выше, а также для создания переменной типа var serializedData = $ (this) .serialize() и публикации переменной, но это короче.

+0

PHP 'десериализации()' не реверсе javascript 'serialize()' Данные в '$ _POST' обрабатывается так же, как и из простого набора входов формы. – RiggsFolly

+0

Хранение массива в mysql вам необходимо сериализовать. Но, передавая его в javascript, вы должны несериализовать и разбирать его в JSON. –

ответ

0

Может быть, вы должны

$('form').submit(function(evt) { 
// Serialize the data in the form 
var serializedData = $(this).serialize(); 
//send off serializedData in your ajax 
} 

ТОГДА

PHP скрипт будет

$data=json_decode($_POST['data']); 

НОВЫЙ ПУТЬ

$.ajax({ 
    url: "update.php", 
    data: {'data': $('form').serialize()}, // works to post data 
    type: "POST", 
    success: function(html) {   
     $("#Result").html(html); 
    } 
+0

Хорошо, я понял, что мне нужно использовать json_decode в скрипте php и добавить новую переменную в script.js, но мои знания javascript/jquery ограничены. Как его использовать и что именно я изменяю в скрипте, чтобы заставить его работать? –

+0

Я получил сериализацию работы для передачи данных в php-скрипт обработки, но я ничего не получаю от переменной $ data. $ _POST возвращает обычный массив. # $ data = json_decode ($ _ POST ['data']); # json_decode все еще запускает пробелы. Есть ли другой способ заставить это работать? Должно ли это работать? –

+0

@BobM просто var_dump ($ _ POST); что вы получаете? – gkalikapersaud

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