Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未在类选择的按钮上使用jQuery post方法设置post数据_Php_Jquery_Forms - Fatal编程技术网

Php 未在类选择的按钮上使用jQuery post方法设置post数据

Php 未在类选择的按钮上使用jQuery post方法设置post数据,php,jquery,forms,Php,Jquery,Forms,在编写这个程序时,这个网站真的很有帮助。不幸的是,我在某个时候遇到了一个障碍,从那时起我就把这个问题归结了很多。现在,我看了三个文件,一个是包含表单的.html,一个是包含事件处理程序的.js,另一个是接收post变量并包含表单新内容的.php 我从最初的文本输入中获得了post数据。新表单内容的设置与我预期的一样。但是,在将此表单内容设置为button类型和button类的新输入之后,button类处理程序中的post方法并没有像我预期的那样在login.php上设置post数据 这是我的密码

在编写这个程序时,这个网站真的很有帮助。不幸的是,我在某个时候遇到了一个障碍,从那时起我就把这个问题归结了很多。现在,我看了三个文件,一个是包含表单的.html,一个是包含事件处理程序的.js,另一个是接收post变量并包含表单新内容的.php

我从最初的文本输入中获得了post数据。新表单内容的设置与我预期的一样。但是,在将此表单内容设置为button类型和button类的新输入之后,button类处理程序中的post方法并没有像我预期的那样在login.php上设置post数据

这是我的密码:

interface.html页面的内容:

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
<form id="interface" action="login.php" method="post">
<input type="text" value="enter username here" name="user"/>
<button id="submit">submit</button>
</form>
<script src='events.js'></script>
</body>
</html>
login.php文件的内容:

<?php
if(isset($_POST['user'])){
  echo '<input type="button" class="button" value="set data"/>';
}else if(isset($_POST['data'])){
  echo 'data is set';
}
?>

您需要等待按钮存在,才能将事件绑定到该按钮。此外,我将从单击切换到提交,并完全删除.button上的单击事件绑定

//$("#submit").click(function () {
$("#interface").submit(function (e) {
    e.preventDefault();
    var $form = $(this), data = $form.serialize();
    if ($form.find(".button").length && $form.find(".button").val() ) {
        data = {data: $form.find(".button").val()};
    }
    $.post($form.attr("action"), data, function (info) {
        $form.html(info);
    });
});

//$("#interface").submit(function () {
//    return false;
//});

由于表单没有被替换,并且事件在表单上,因此您不再需要重新绑定任何内容。

这里有两个问题。首先,您可以将click事件和submit事件组合为1(您应该只使用submit事件)。其次,您需要在添加后绑定到
.button
的click事件,而不是之前。是的,我将src=“events.js”的脚本标记复制到login.php的底部,这解决了我的问题。非常感谢。我肯定会将此标记为正确答案,尽管我不知道如何在评论中这样做。我会扔给你一些代表什么的。好吧,那可能是解决问题的错误方法。通常最好不要在ajax加载的内容中包含js。我想这就是添加按钮后绑定事件的意思。我需要某种单击事件处理程序,因为表单中有时会有多个按钮。如果我提交所有按钮的值,我将不知道单击了哪个按钮。也就是说,我将此答案标记为正确,因为我不知道在创建输入后需要绑定事件,这解决了我的问题。您只需要按钮的值,对吗?只要把它拿出来寄出去就行了。(更新)在提交表格后,如何做到这一点?我不需要单击事件处理程序来知道是否单击了按钮吗?我的意思是,我可能错了。在这种情况下,我们根本不在乎按钮是否被点击。单击按钮或用户按输入/按钮上的enter键时,表单将被提交。我们正在捕获提交事件的表单。同意。如果有人能按原样购买这个程序就好了。叹息
//$("#submit").click(function () {
$("#interface").submit(function (e) {
    e.preventDefault();
    var $form = $(this), data = $form.serialize();
    if ($form.find(".button").length && $form.find(".button").val() ) {
        data = {data: $form.find(".button").val()};
    }
    $.post($form.attr("action"), data, function (info) {
        $form.html(info);
    });
});

//$("#interface").submit(function () {
//    return false;
//});