2016-03-30 42 views
0

我不確定這是否可能,但我正在尋找一種方法來保存我的網頁的整個狀態,而不是明確地將每個元素保存到數據庫中。在mysql中保存整個DOM

例如,我動態地創建按鈕,複選框,文本等,直到網頁看起來像它需要的。我可以將DOM保存爲字符串還是將Blob保存在數據庫中,然後在網頁返回時解析它?

我已經試過了諸如:

var doc = document.documentElement.outerHTML; 

然後保存字符串數據庫,但它不工作。

我使用AJAX調用PHP腳本編寫到MySQL:

jQuery.ajax({ 
      type: "POST", 
      url: 'connect/database.php', 
      dataType: 'json', 
      data: {functionname: 'connect_to_database', arguments: [user_id, user, doc] }, 
      success: function (obj, textstatus) { 
      if(!('error' in obj)) { 
      } 
      else { 
      console.log(obj.error); 
      } 
      } 
      }); 

PHP的樣子:

// connection script 
        $servername = "XXX"; 
        $username = "XXX"; 
        $password = "XXX"; 
        $dbname = "XXX"; 

        $user_id = $_POST['arguments'][0]; 
        $user = $_POST['arguments'][1]; 
        $string = $_POST['arguments'][2]; 

        // create connection 
        $conn = new mysqli($servername, $username, $password, $dbname); 
        // Check connection 
        if ($conn->connect_error) { 
         die("Connection failed: " . $conn->connect_error); 
        } 

         $sql = "INSERT INTO table (user_id, user, string) VALUES ('$user_id', '$user', '$string')"; 
        # $sql = "UPDATE crows_nest SET json_string='$configuration' WHERE user = '$user'"; 

        if ($conn->query($sql) === TRUE) { 
         echo "New record created successfully"; 
        } else { 
         echo "Error: " . $sql . "<br>" . $conn->error; 
        } 
        $conn->close(); 
+0

什麼不行? 'document.documentElement.outerHTML'返回一個字符串。只需將其轉儲到數據庫中。 – thangngoc89

+0

@ thangngoc89它沒有保存。我將mysql類型設置爲longtext。 – Cybernetic

+0

JSON.stringify接受一個對象並將其轉換爲字符串。沒有必要這樣做,因爲文檔已經是字符串 – thangngoc89

回答

1

用事先準備好的聲明,以防止文檔中特殊字符的問題串。

$stmt = $conn->prepare("INSERT INTO table (user_id, user, string) VALUES (?, ?, ?)"); 
$stmt->bind_param("iss", $user_id, $user, $string); 
if ($stmt->execute()) { 
    echo "New record created successfully."; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 
+0

就是這樣。謝謝。 – Cybernetic