簡體   English   中英

從PHP中的Ajax帖子中檢索值

[英]Retrieving values from an Ajax post in PHP

我使用ajax請求提交表單,該請求將值發布到php腳本,然后將這些值存儲在數據庫中。 這是我的ajax帖子:

            $.ajax({

                type:"POST",
                url: "wp-content/plugins/super-plugin/process.php",
                'data': 'datastring',
                success: function() {

                    $('#formwrapper').html("<div id='message'></div>");
                    $('#message').html("<h2>Contact form submitted!</h2>")
                    .append("<p>We will be in touch soon.</p>").hide().fadeIn(1500, function() {
                        $('#message').append("<img id='checkmark' src='images/check.png' />");
                    });
                }
            });

這是我的PHP文件:

    $full = explode("&", $_POST["data"]);
    $fname = explode(":", $full[0]);
    $name = $fname[1];
    $femail = explode(":", $full[1]);
    $email = $femail[1];
    $fphone = explode(":", $full[2]);
    $phone = $fphone[1];

    $conn = mysqli_connect("localhost", "Andrew", "Change0", "plugindatadb");
    mysqli_query($conn, "INSERT INTO data (Name, Email, Phone) VALUES ('$name', '$email', '$phone')");

數據字符串中的數據的格式為“名稱:Bo&email:bob @ mail&phone:0786754333”。 但是由於某種原因,我不能使用那些在我的PHP腳本中發送的變量? 由於某種原因,PHP腳本無法正常運行。

您提到過,您在變量datastring中設置了格式化的查詢參數,然后在這種情況下,應在ajax請求中使用如下所示的內容(刪除data和datastring的引號)。

$.ajax({

                type:"POST",
                url: "wp-content/plugins/super-plugin/process.php",
                data: datastring,
                success: function() {

                    $('#formwrapper').html("<div id='message'></div>");
                    $('#message').html("<h2>Contact form submitted!</h2>")
                    .append("<p>We will be in touch soon.</p>").hide().fadeIn(1500, function() {
                        $('#message').append("<img id='checkmark' src='images/check.png' />");
                    });
                }
            });

從數據字符串中刪除''

data: datastring

bt這不是將數據傳遞到data之類的json中的正確方法,

$.ajax({
    type:"POST",
    url: "wp-content/plugins/super-plugin/process.php",
    'data': {
              name:"Bo",email:"bob@mail",phone:"0786754333"
            },
    success: function() {

        $('#formwrapper').html("<div id='message'></div>");
        $('#message').html("<h2>Contact form submitted!</h2>")
        .append("<p>We will be in touch soon.</p>").hide().fadeIn(1500, function() {
            $('#message').append("<img id='checkmark' src='images/check.png' />");
        });
    }
});

並進入php頁面。

$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];

首先,在:

'data': 'datastring',

如果“數據字符串”是一個變量(如您對其格式的說明所示),則這些值不應用引號引起來。 所以:

data: datastring,

其次,如果您的PHP腳本假設傳入的數據可以拆分為多個組件,並且在不首先驗證數據是否為所需格式(或至少存在那些數組元素)的情況下訪問了這些數組元素,則它將拋出一個如果數據無效,則異常。 當前正在發生這種情況,因為數據是“數據字符串”。 您應該始終驗證輸入參數,因為從長遠來看,這樣可以節省時間。

ajax調用中的data更改為

data : { datastring : datastring },

在php中訪問它像$_POST['datastring']

暫無
暫無

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

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