1

我将尝试非常缓慢地引导您完成此过程。我正在尝试进行经常更改的民意调查,因此我必须使其具有动态性。我还需要在不重新加载页面的情况下使用它,所以我需要使用 Ajax 来提交表单。所以我所做的就是创建一个 PHP 脚本来为我响应投票。这很好用,我得到了我想要的民意调查。哦,是的,忘了说这是一个多步骤民意调查。我通过在 JQM“页面”中隐藏/显示 div 一次浏览 2-4 个问题。我的意思是:

<div data-role='page'>

在最后一页,我确实有一个提交按钮而不是下一个按钮,因为民意调查显然没有“下一个”div 来显示。这个提交按钮在任何情况下都不起作用,形状或形式工作,因此是这里的问题

$("#submit").click(function() 
        {
            if ($("#form").validate()) 
            {
                $.ajax(
                {
                type:'POST',
                url:'add.php',
                data:$('#form').serialize(),
                success:function(response)
                {
                    $("#answers").html(response);
                }
            });
            } 
            else    
            {
                return false;
            }                   

        })

这应该将我的表单数据发送到另一个名为add.php的 PHP 文件,然后应该将其发布到下面显示的 div 中。(它真的应该只是保存到数据库,但我尝试回显它,直到我看到它有效)。现在,转折是我在非动态表单上编写了另一段相同的代码,该表单不是通过 PHP 创建的,而只是用 HTML 绘制的。这也是一个跨越 3 个 div/“页面”的多步骤民意调查。这完全没有问题提交。

总结一下:我有两个不同的项目,每个项目都解决了我一半的问题。一个动态生成表单,另一个保存我制作的静态表单。两种形式都由各种复选框、单选按钮和文本区域组成。问题是,他们不会一起工作。当我单击提交按钮时,我希望表单将答案回显到此 div 中(您阅读了几行的那个):

<div data-role="content" id="answers">
        Answers comes here: 
        </div>

然而,这个 div 保持不变。我将 $("#submit").click(function()) 剥离为 alert('test'); 我仍然无法得到反应。我已经对变量名称和 div 名称以及任何其他相关名称进行了千万亿次检查,并且我对每个单独的部分(生成民意调查和使用 ajax 发布)以及我的尝试进行了各种细微调整将它们组合起来没有成功。那么,百万美元的问题是什么可能是错的?我剩下的最后一个假设是,在生成投票的脚本之前加载了 $("#submit").click ... 的 JavaScript 函数。这是有道理的,当提交点击函数被声明时,它不会链接到任何按钮,如下所示:

<input type="button" id="submit" name="Submit"/>

有没有人知道我如何让这个提交按钮工作,甚至知道为什么它不起作用?感谢读到这里的任何人,我希望你提出并愿意分享一些可以帮助我的知识。还要感谢 Stack Overflow 的创建者为此实现了一个 alt+z 函数,因为我在写这句话之前的句子时不小心点击了 alt+a 然后随机字母。祝你今天过得愉快!

编辑:在凯文的提示后尝试了这个答案,但即使是第一个警报按钮也没有反应:

$("#submit").click(function() 
    {
        alert("it works");
        if ($("#form").validate()) 
        {
            $.ajax(
            {
            type:'POST',
            url:'add.php',
            data:$('#form').serialize(),
            success:function(response)
            {
                $("#answers").html(response);
                return false;
            }
        });
        } 
        else    
        {
            return false;
        }                   

    })
    });
4

2 回答 2

0

你需要一个 return false;在 $("#answers").html(response); 在成功函数的范围内。让我知道这个是否奏效。祝你好运,凯文

于 2012-07-18T08:32:43.367 回答
0

I just tried the script above without the post and it worked fine. Do you have jquery loaded before this script executes, and/or do you have or do you have any javascript errors in your console?

于 2012-08-07T16:05:04.930 回答