簡體   English   中英

將ajax關聯數組傳遞給php關聯數組

[英]passing ajax associative array to php associative array

我試圖通過$ .ajax方法將表單值傳遞給PHP。 我在html中有以下表格:

<form>
<p>
   <label for="login">User ID:</label>
   <input type="text" name="login" id="login" value="user name">
</p>

<p>
   <label for="password">Password:</label>
   <input type="password" name="password" id="password" value="password">
</p>
</form>

和ajax:

$("form").submit(function(event) {
 var formInput = $('form').serialize();// tried with serializeArray() also

 var request = $.ajax({
    type: "POST",
    url:"../some.php", 
    data: {formInput:formInput},
    statusCode: {
                404: function() { alert("file not found");}}

 });

的PHP:

<?
$data = $_POST['formInput'];
$data = array();
parse_str($_POST, $data);
print_r($data);
?>

在控制台上打印:

(
     [Array] =>
)

我想要的是讓$ data成為一個關聯數組,如:

$data = array(
        'login' => 'foo'
        'password' => 'bar'
        );

但是好像$ data正在作為字符串處理...預先謝謝!

使用data: $('form').serializeArray()代替data: {formInput:formInput},

然后在php端, $_POST只是您想要的數據。

您需要指定您想要一個關聯數組,而不是json_decode中的對象:

json_decode($data, true);

您可能還需要這樣做-

$('form').serializeArray();

代替這個:

$("form").submit(function(event) {
 var formInput = $('form').serialize();// tried with serializeArray() also

 var request = $.ajax({
    type: "POST",
    url:"../some.php", 
    data: {formInput:formInput},
    statusCode: {
                404: function() { alert("file not found");}}
 });

用這個 :

$("form").submit(function(event) {
 var formInput = $('form').serialize();// tried with serializeArray() also

 var request = $.ajax({
    type: "POST",
    url:"../some.php", 
    data: formInput,
    statusCode: {
                404: function() { alert("file not found");}}
 });

我們想要的是序列化為json對象,然后可以對其進行解碼。 使用 .serializeObject可以訪問.serializeObject

$("form").submit(function(event) {
 var formInput = $('form').serializeObject();
 formInput = JSON.stringify(formInput);

 var request = $.ajax({
    type: "POST",
    url:"../some.php", 
    data: {formInput:formInput},
    statusCode: {
                404: function() { alert("file not found");}}

 });

然后在php端,您可以輕松地解碼JSON

$data = json_decode($_POST['formInput'], true);

通過出色的答復,我弄清楚了我的問題所在。 當我提交POST時,我正在將數組放入數組中。

以下ajax代碼:

$("form").submit(function(event) {
var formInput = $('form').serialize();// tried with serializeArray() also

var request = $.ajax({
type: "POST",
url:"../some.php", 
data: {formInput:formInput},
statusCode: {
            404: function() { alert("file not found");}}
});

更改為:

$("form").submit(function(event) {
var formInput = $('form').serializeArray();

var request = $.ajax({
type: "POST",
url:"../some.php", 
data: formInput,
statusCode: {
            404: function() { alert("file not found");}}
});

PHP更改為:

<? $data = $_POST;
    print_r($data); ?>

在cosole上打印的正是我想要的:

Array
(
[login] => admin
[password] => qwerty123!
)

謝謝大家的快速反應

暫無
暫無

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

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