2

正直なところ、この質問をどのように構成するかはわかりませんが、ここに行きます.

次の入力フィールドを持つフォームがあります。

<input name="key[23]" type="text" />
<input name="key[29]" type="text" />
<input name="key[65]" type="text" />

Jquery で配列を作成して、次のように PHP スクリプトに送信できます。

    var new_keys = new Array();
$('input[name="keys[]"]').each(function() {
    new_keys.push($(this).attr('value'));
});

ただし、入力フィールドに既にキーがある場合、配列を作成する方法がわかりません: input name="test[45]"

入力名の代わりにクラスセレクターを使用するようにメソッドを変更しようとしましたが、キー名を取得できません。

私がする必要があるのは、キー名とその値を PHP に送信して、キー名がテーブル ID 番号と等しいテーブルを更新できるようにすることです。Ajax を使用していなければ、これは簡単に実行できます。

それが理にかなっていることを願っています。

編集済み

<form method="post" id="add-form" class="form" onsubmit="return false;">
<input class="required" type="text" name="name" id="name" />
<input class="required" type="text" name="keys[32]" />
<input class="required" type="text" name="keys[65]" />
<textarea name="Test"></textarea>
<input type="submit" name="submit" value="submit" />
</form>

$(document).ready(function() {
    $.fn.submitForm = function() {
        var name = $('#name').attr('value');
        var new_keys = new Array();
        $('input[name="keys[]"]').each(function() {
            new_keys.push($(this).attr('value'));
        });

        $.ajax({
            type: 'POST',
            data: { 'new_keywords' : new_keywords, 'name' : name },
            dataType: 'json',
            url: 'article/scripts/article.scripts.php',
            success: function($data) {
                var result = $data.result;
                var msg = $data.msg;

                if (result == "success") {
                    formMessageDisplay(msg, result);
                }
                else {
                    formMessageDisplay(msg, result);
                }
            },
            error: function($data) {
                formMessageDisplay('<?php echo AJAX_ERROR; ?>', result);
            }
        })
    }
});

これは、私が持っているスクリプトの縮小版です。

4

3 に答える 3

1

フィールドの名前を取得してから、配列に値を割り当てる必要があるこのようなことを行うことができます。その後、必要に応じて PHP で処理およびクリーンアップできます。

var new_keys = new Array();
$('input[name="keys[]"]').each(function() {
    new_keys[$(this).attr('name')] = $(this).attr('value');
});
$.post('url/to/script/here.php', new_keys, function(data) {
    // process data here on success
}, 'json'); // expecting a json object

ajax の詳細については、投稿メソッドを使用するために @ this を参照してください http://api.jquery.com/jQuery.post/

于 2012-07-23T17:20:58.153 に答える
0

フォームがあることを明確にするために、javascript/ajax を介して値を php スクリプトに送信したいですか?

その場合、次のようなものがあります。

HTML:

<form id="myForm" action="phpScript.location" method="post">
   <input/>...
   <input/>...
</form>

Javascript/jQuery:

    $('form').bind('submit', function() {
        $.ajax({
            url: 'phpScript/location',
            data: $('form').serialize(),  // This will give you the needed key/pair parameterization you need. 
            type: 'POST',
            dataType: 'html', // This can be one of many values.  Just defines the expected response type. 
            success: function(data, status, xhr) {
                // Success response
            },
        });
        return false;
    });

ドキュメントのシリアル化: http://api.jquery.com/serialize/

于 2012-07-23T17:32:37.047 に答える
0

値を配列として渡し、名前を別の配列として渡してから、PHP でそれらを と組み合わせることができますarray_combine()

var new_keys = new Array();
var new_names = new Array();
$('input[name="keys[]"]').each(function() {
    new_keys.push($(this).attr('value'));
    new_names.push($(this).attr('name'));
});

//Then in PHP
$complete_array = array_combine($new_names, $new_keys);
于 2012-07-23T17:18:56.610 に答える