2017-02-15 24 views
0

Я пытаюсь использовать ajax для клонирования всей страницы html с данными формы, которые заполняются вводом от пользователей, а затем php для сохранения всей страницы , включая входные значения. Я могу клонировать, но не отправлять эти данные. Как я могу это сделать? Я могу отправить html, добавив .html(), но я не могу отправить данные с помощью html таким образом. Если я просто клонирую его, я получаю данные в формах ... но я не могу его отправить. Я получаю сообщение об ошибке с JQuery в этом образе:jQuery получить всю html-страницу, включая ввод формы - отправить php для сохранения

enter image description here

$(document).ready(function() 
    { 

$('.ClickMe').click(function(event) 
{ 
event.preventDefault(); 
var TheClone = $('.TheBody').clone(); 
console.log("Cloned"); 
//$('.TheBody').append(TheClone); 

$.ajax({ 
type: 'POST', 
url: "SaveForm.php", 
data: { 
    MyData: TheClone 
}, 
success: function (data) { 
    // 
}, 
error: function (req, status, error) {} 
}); 

Вот мой PHP, чтобы сохранить, который работает, но данные не попасть туда из JQuery.

<?php 
$Data = $_POST['MyData']; 
file_put_contents('SavedForms/saved.php', $Data); 

?> 
+0

'$ Data = $ _POST [ 'MyData'];' вы не думаете –

+0

, почему бы вам не просто seriealize формы и передать входные значения? – gavgrif

+0

Если я сериализую их, я снова верну их обратно в нужное место? Я этого никогда не делал. –

ответ

1

Если вы хотите отправить объект JQuery в виде строки (HTML) на сервере вы должны сначала извлечь HTML из этого объекта:

var TheClone = $('.TheBody').clone().html(); 

Второй (как уже отмечалось), внутри PHP вы должен использовать $_POST['MyData']; (ключ должен быть строкой MyData, а не константой).

+0

Это работает, чтобы сохранить html, но не данные формы в полях ввода. Как я могу сохранить это тоже? –

+0

Я могу клонировать, но не отправлять эти данные. Как я могу это сделать. Я могу отправить html с вашим кодом, но я не могу отправить данные. Если я просто клонирую его, я получаю данные в формах ... но я не могу его отправить. –

+0

Как вы ожидаете получить данные? Почему бы просто не отправить форму самостоятельно? – Dekel

1

Устранена:

Я получил его на работу с помощью жесткого кодирования входа пользователей в HTML на изменении йот затем отправляющее HTML с помощью Ajax. Я разделяю надежды, что эта идея может помочь другим. Я смог клонировать html-страницу, но я не мог отправить этот клон с данными через Ajax. Я мог бы сохранить html как Dekel, упомянутый выше, но у этого не было данных.

Так как я работаю, я сохранил данные в html, когда пользователь изменил его с помощью jQuery. Я использовал оба входа и флажки. Я дал всем флажкам класс MyCheck и все текстовые входы класса MyInput. Вот код, который я использовал.

$('.MyInput').on("change paste keyup", function() 
    { 
    var MyVal = $(this).val(); 
    $(this).attr('value', MyVal); 
    }); 

    $('.MyCheck').on("change paste keyup", function() 
    { 
    if($(this).attr("checked")) 
    $(this).removeAttr("checked"); 
    else 
    $(this).attr('checked', 'checked'); 

    }); 


    $('.ClickMe').click(function(event) 
    { 
    event.preventDefault(); 

    var TheClone = $(".TheBody").html(); 

    $.ajax({ 
    type: 'POST', 
    url: "SaveEnrollment.php", 
    data: { 
     MyData: TheClone 
    }, 
    success: function (data) { 
     window.location = "/thank-you"; 
    }, 
    error: function (req, status, error) {} 
});