簡體   English   中英

如何在PHP腳本中訪問使用jQuery.ajax()從HTML頁面傳遞的表單數據的各個值?

[英]How to access individual values of form data, passed from an HTML page with jQuery.ajax(), inside a PHP script?

我正在將表單數據傳遞給PHP腳本以通過JS( jQuery.ajax() )進行處理。

問題是-我想不出一種方法來訪問PHP內部的單個表單控件值(例如$_POST['zipcode'] )。

取而代之的是,我只能使用$_POST['form']來訪問數據,它是表示為一個長字符串的完整表單(例如string(89)"color=red&color=blue&zipcode=12345..." )。

如何通過JS從HTML表單傳遞的PHP腳本中訪問表單數據中的表單數據的各個值?

的index.php(形式)的

 <form id="myform">
    <select name="color" id="color">
    <option value="Red">Red</option>
    <option value="Green">Green</option>
    <option value="Blue">Blue</option>
    </select>
    <input type="text" id="zipcode" name="zipcode" />
    <input type="submit" id="submit" name="submit" value="Submit" />
    </form>

的index.php(JS)

$('#myform').on('submit', function(e) {
                    e.preventDefault();
                    $.ajax({
                        type: 'POST',
                        dataType: 'html',
                        url : 'PHPscript.php',
                        data: {form : $('#myform').serialize()}
                    }).done(function(data) {
                         var myJSONresult = data;
                         alert(myJSONresult);
                    });
                });

PHPscript

<?php
if(isset($_POST["form"])){
$form = $_POST["form"];

$myzipcode = $_POST['zipcode']; // won't work; will be null or empty

echo json_encode($form);

}
?>

編輯: 郵政編碼字段:

$("#zipcode").focus(function(){
                    if(this.value == "zipcode"){
                        $(this).val("");
                    }
                }).blur(function(){
                    if(this.value == ""){
                        $(this).val("zipcode");
                    }
                });

您需要在表單數據上使用serializeArray()而不是序列化。 那將作為數組提交。

data: $('#myform').serializeArray()

HTML

<input type="hidden" name="action" value="submit" />

PHP

if(isset($_POST["action"]))
{
    //code
}

dataType: 'json'添加到您的ajax處理程序中,然后進一步修改代碼,如下所示:

$.ajax({
    type: 'POST',
    dataType: 'json', // changed to json
    url : 'PHPscript.php',
    data: {form : $('#myform').serialize()},
    success : function(data){ // added success handler
     var myJSONresult = data;
     alert(myJSONresult.yourFieldName);
    }
});

將傳統設為真像

$.ajax({
traditional:true,
//your rest of the ajax code
});

在php端,您可以得到很好的值,問題出在表單序列化端

暫無
暫無

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

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