簡體   English   中英

通過 AJAX 將表單數據傳遞給 mySQL

[英]passing form data to mySQL through AJAX

I am using JavaScript and AJAX to send form data to a php processing file to then populate an SQL database without refreshing the initial form page.

php/SQL 連接正常,但未正確發送表單數據。

有兩個字段:一個稱為“選擇”的廣播組和一個稱為“評論”的文本字段。 填充數據庫時,選擇字段始終為“是”(3 個單選按鈕中的第一個),注釋字段始終為空白。 我認為問題一定是構建數據字符串的方式,但是數小時的修補並沒有帶來成功。

這是 html 表格

<form id="paPoll">
  <label><input type="radio" name="RadioGroup1" value="yes" id="choice1">Yes</label>
  <label><input type="radio" name="RadioGroup1" value="no" id="choice2">No</label>
  <label><input type="radio" name="RadioGroup1" value="dont_know" id="choice3">I Don't Know</label>
  <label for="comments">Comments?</label><input name="comments" type="text" id="comments" size="25" maxlength="60">   
  <input type="button" name="form_process" id="form_process" value="submit" onClick="$.fn.removeMbMenu($.mbMenu.options.actualOpenedMenu,true);" />
</form>

這是 Javascript/AJAX function

<script type="text/javascript">
    $(function() {
      $("#form_process").click(function() {
        var choice = $("#choice").val();
        var comments = $("#comments").val();
        var dataString = 'choice='+ choice + '&comments=' + comments;

        $.ajax({
          type: "POST",
          url: "**ABSOLUTE URL TO PROCESSOR**",
          data: dataString
        });
      });
    });
</script>

這是 php 處理器

<?php
$choice = $_POST ['choice'];
$comments = $_POST ['comments'];
//perform insert
    $query = mysql_query("INSERT INTO paPoll 
    (choice, comments)      
    VALUES  
    ('$choice', '$comments')");         
        if (!query) {
           die("Database query failed: " . mysql_error());
        }
?>

想法或建議?

我在這里發現了一個非常相似的問題,但該線程已有 3 年歷史。 一位用戶建議了這個

//Instead of using
data: dataString
//use
data : {param: value, param2: value2}

但我不確定他如何或以什么格式獲取參數值。

謝謝
-音節

如果是我,我會通過使用表單插件讓自己更輕松。 它已經有了一組ajaxSubmit函數,可以毫不費力地對表單進行 ajaxify。 它還有方便的formSerialize function 它將為 ajax 提交或 append 的表單序列化為鏈接的查詢字符串。 :-)

這就是說沒有插件並利用現有代碼的更簡單方法:

$("#form_process").click(function() {

  $.ajax({
    type: "POST",
    url: "**ABSOLUTE URL TO PROCESSOR**",
    data: {
      'choice': $("input[@name=RadioGroup1]:checked").val(), 
      'comments':  $("#comments").val()
    }
  });

});

不過,無論哪種方式,您還需要將所有無線電輸入更改為具有唯一 ID(或根本沒有 ID)......您不能使用與要求所有 id 屬性在文檔中具有唯一值相同的那個。

幾周前我有同樣的問題,我只是嘗試使用這樣的舊方法

<script type="text/javascript">
    $(function() {
      $("#form_process").click(function() {
        //$("#choice").val(); //you cannot use the same id for more than 1 tag
        var choice = 0; 
             if(document.getElementById("choice1").checked) choice='Yes';
        else if(document.getElementById("choice2").checked) choice='No';
        else if(document.getElementById("choice3").checked) choice='Dont Know';

        var comments = document.getElementById('comments').value; //$("#comments").val();
        var dataString = 'choice='+ choice + '&comments=' + comments;

        $.ajax({
          type: "POST",
          url: "**ABSOLUTE URL TO PROCESSOR**",
          data: dataString
        });
     });
   });
</script>

真的我不知道,我認為這不是最好的方法,但這對我有用:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM