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 以使用 post 方法http://api.jquery.com/jQuery.post/

于 2012-07-23T17:20:58.153 回答
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 回答
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 回答