#php #jquery #.post
#php #jquery #.post
Вопрос:
итак, я новичок в использовании jquery .post (), однако я не использую методы, которые я еще не использовал раньше.
Я пытаюсь опубликовать два скрытых входных значения при нажатии кнопки:
$('#button').live('click', function() {
$.post('export_file.php', { group: form.group.value , test: form.test.value },
function(output) {
$('#return').html(output).show();
});
});
я протестировал, что событие кнопки успешно срабатывает, и в настоящее время все, что я пытаюсь сделать в export_file.php
, это что-то повторить.
вот моя форма:
<form name="form">
<input type="hidden" name="group" value="<?echo $group;?>">
<input type="hidden" name="test" value="<?echo $test_id;?>">
<input type="button" class="Mybutton" id="button" name="btnSubmit" value="Export Results">
</form>
у меня есть мой div на исходной странице:
<div id='return'></div>
export_file.php:
<?php
echo "whatever, something!";
?>
Кто-нибудь может указать, где я ошибаюсь. Большое спасибо,
Комментарии:
1. Что вам сообщает Firebug console? Есть ошибка JS?
2. смотрите демонстрацию, которую я добавил в свой ответ
Ответ №1:
Попробуйте:
$('#button').live('click', function() {
$.post('export_file.php', { group: $("input[name='group']").val() , test: $("input[name='test']").val() },
function(output) {
$('#return').html(output).show();
});
});
Комментарии:
1. это сделало бы его применимым к любому вводу с
name=test
и любому сname=group
2. @Neal: И его текущая форма имеет только одну. Да ладно, почему это должно быть таким чрезмерно сложным? Не предполагайте требований, которых там нет.
3. @mellamokb я кодирую то, что, по моему мнению, OP будет делать в будущем.
4. @Neal, в таком случае почему ты не проверил входные данные и для него? Почему вы также не добавили функцию автозаполнения?
5. На самом деле, почему вы также не закодировали для него небольшой плагин, который будет отправлять ajax любую форму, которая ему нравится, используя сериализованные данные формы? Я имею в виду, вы наверняка «верите», что в будущем он захочет отправить форму через AJAX, не так ли?
Ответ №2:
Исправьте эту строку:
$.post('export_file.php', { group: form.group.value , test: form.test.value },
Измените его на что-то вроде этого:
var group_val = $('input[name="group"]', 'form[name="form"]').get(0).value;
var test_val = $('input[name="test"]', 'form[name="form"]').get(0).value;
$.post('export_file.php', { group: group_val , test: test_val },
Комментарии:
1. @downVoter кто-нибудь хочет это объяснить?
Ответ №3:
Я добавил идентификаторы к элементам вашей формы в вашем HTML:
<form name="form">
<input type="hidden" name="group" id="group" value="<?echo $group;?>">
<input type="hidden" name="test" id="test" value="<?echo $test_id;?>">
<input type="button" class="Mybutton" id="button" name="btnSubmit" value="Export Results">
</form>
Затем внес изменения в jQuery, чтобы получать значения из этих полей по ID и использовать их в параметрах вашего вызова AJAX:
$('#button').live('click', function() {
var groupValue = $("#group").val();
var testValue = $("#test").val();
$.post('export_file.php', { group: groupValue , test: testValue },
function(output) {
$('#return').html(output).show();
});
});
Комментарии:
1. Им не нужны идентификаторы, смотрите мой ответ ниже
2. вам не хватает
.val()
в назначениях:var groupValue = $("#group").val();
3. Вы имеете в виду свой ответ выше: P
4. @Neal при всем уважении, ваш ответ был чрезмерно сложным, в таком простом случае практически нет необходимости устанавливать переменные
5. @Neal, правда, им не нужны идентификаторы для работы, но селектор идентификаторов, безусловно, самый быстрый, поэтому я всегда предлагаю людям использовать его, когда это возможно, а не
INPUT[name=foo]
. В конце концов, все они работают, это просто личные предпочтения.
Ответ №4:
попробуйте этот
$('#button').live('click', function() {
var group_val = $("input[name='group']").val(); // gets the value of hidden field with the name group
var test_val = $("input[name='test']").val(); // gets the value of hidden field with the name test and store it in test_val variable
$.post('export_file.php', { group: group_val , test: test_val },
function(output) {
$('#return').html(output).show();
});
});