2012-05-16 30 views
2

我的任務是爲相當大的表單寫入加載/保存函數。這樣用戶可以保存他們的工作,然後再回來加載並繼續工作。從表單保存和加載數據而不提交

我決定使用服務器端存儲並將數據本地保存到mysql數據庫。我想出了'saveForm',它只是將$ _POST作爲長字符串存儲到列中。

我想不出如何寫'loadForm'。

我:

<form id="qa" .. "> 
    <button id="saveForm" type="submit"..."> 
    <button id="loadForm" type="submit"..."> 
    <input type="hidden" id="unique_user_id"..."> 
</form> 

<javascript> 
$('#saveForm').bind({ 
    click: function() { 
     $.ajax({ 
      type: 'post', 
      url: "/saveForm.php", 
      data: $("#qa").serialize(), 
      success: function() { 
       alert("form was submitted"); 
      }, 
     }); 
     return false; 
    }, 
}); 
<javascript> 


saveForm.php: (PHP & PDO) 
// connect 
insert into `saveQAForm` ($_POST['id'],var_export($_POST)); 
+0

加載頁面($(document).ready())時,將執行loadForm函數:向服務器發送AJAX請求,並使用數據響應以填充表單。在這種情況下,服務器必須查詢數據庫並返回請求的數據。你可以在不提交任何內容的情況下做到 – Wilk

+0

用戶實際上需要點擊一個按鈕來加載表單數據? – iddo

+0

是的,有一個「加載」和「保存」,他們可以使用或不使用,直到他們。 – awm

回答

1

做這樣的事情:

$(document).ready(function() { 

    $('#loadForm').bind({ 
     click: function() { 
      $.ajax({ 
      type: 'post', 
      url: "/loadForm.php", 
      data: 'id=123&token=8ash198hkuhd98yhk', 
      success: function(data) { 
       $('#first_name').val = data.first_name; 
       $('#last_name').val = data.last_name; 
      } 
      }); 
      return false; 
     }, 
    }); 

}); 

loadForm.php

// Get values 
$id = $_POST['id']; 
$token = $_POST['token']; 

// Check hash value here. Use your preferred 
// database method ensuring POST values are filtered first. Then: 
if($token == $row['token']) 
{ 
    // Make DB query to get form data and return it as JSON 
    return json_encode($row); 
} 

我覺得通過一個獨特的標記或隨機數是唯一的用戶是很重要的/會話,以便其他人無法提出身份證申請並獲取該用戶的個人信息。只是一個想法。

+0

這很好。我不必做令牌,因爲它已經是表單數據的一部分,但其他一切看起來都不錯。我會嘗試併發布最終解決方案。謝謝。 – awm

1

當頁面加載($(文件)。就緒()),則執行loadForm功能:一個AJAX請求被髮送到服務器,並將其與數據迴應填表格。在這種情況下,服務器必須查詢數據庫並返回請求的數據。你可以在不提交任何內容的情況下做到

下面是一個例子:

客戶端:

$(document).ready (loadForm); 

function loadForm() { 
    $.ajax ({ 
    url: '/loadForm.php' , 
    success: function (data) { 
     $('#firstField').val (data.firstField); 
     $('#secondField').val (data.secondField); 
    } 
    }); 

服務器端:查詢數據庫和回聲數據

0

您可以加載保存的數據(如果任何)執行php代碼期間填寫這些數據字段。 Ajax在這裏可能沒有必要。

<?php //yourform.php (PHP & PDO) 
// connect 
select * from `saveQAForm` where user_id = $_COOKIE['user_id'] 

?><input name="field1" value="<?=(isset($data['field1'])?$data['field1']:""?>" />