Честно говоря, я не уверен, как сформулировать этот вопрос, но здесь.
У меня есть форма со следующими полями ввода:
<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, чтобы я мог обновить таблицу, где ключевое слово равно идентификатору таблицы. Это просто сделать, если я не использовал 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); } }) } });
Это сокращенная версия скрипта, который у меня есть.
Вы можете сделать что-то вроде этого, которое должно захватывать имена полей, а затем присваивать значения в массиве. Затем вы можете обработать и очистить его в 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 look @ this для использования метода post http://api.jquery.com/jQuery.post/
Вы можете попробовать передать значения в виде массива и имена в виде другого массива, а затем объединить их в 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);
Чтобы уточнить, что у вас есть форма, вы хотите отправить значения в скрипт php через javascript / ajax?
Если это так, то у вас будет что-то вроде:
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/