0

$.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>

そしてアヤックス:

$("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 は文字列として扱われているようですが… よろしくお願いします!

4

5 に答える 5

2

json_decodeからのオブジェクトの代わりに連想配列が必要であることを指定する必要があります。

json_decode($data, true);

これを行う必要があるかもしれません-

$('form').serializeArray();
于 2013-04-10T15:36:14.173 に答える
1

必要なのは、デコード可能な json オブジェクトにシリアル化することです。にアクセスするには、このプラグインを使用.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);
于 2013-04-10T15:37:02.893 に答える
0

素晴らしい回答から、私の問題が何であるかを理解しました。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!
)

みなさん、素早い回答ありがとうございます

于 2013-04-10T17:21:58.733 に答える