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));
4

3 に答える 3

1

ページが読み込まれると($(document).ready())、loadForm関数が実行されます。AJAXリクエストがサーバーに送信され、サーバーはフォームに入力するためのデータで応答します。この場合、サーバーはデータベースにクエリを実行し、要求されたデータを返す必要があります。何も送信せずにこれを行うことができます。

次に例を示します。

クライアント側:

$(document).ready (loadForm);

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

サーバー側:データベースにクエリを実行し、データをエコーし​​ます

于 2012-05-16T13:23:40.700 に答える
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);
}

別の人が ID を要求してそのユーザーの個人情報を取得できないように、フォームを取得するときにユーザー/セッションに固有の一意のトークンまたはナンスを渡すことが重要だと思います。ちょっとした考え。

于 2012-05-16T13:27:31.560 に答える
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']:""?>" />
于 2012-05-16T13:25:53.203 に答える