从PHP生成的轮询中使用ajax发布的问题

时间:2012-07-17 15:26:13

标签: php javascript jquery ajax jquery-mobile

我会尽力让你走过这么慢。我试图做一个经常变化的民意调查,所以我必须让它变得有动力。我还需要没有页面重新加载,所以我需要使用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文件,然后将其发布到下面显示的abit div。 (它真的应该保存到数据库,但我试图回应它,直到我看到它的工作原理)。现在,扭曲的是我在非动态表单上做了另一段相同的代码,这些代码是通过PHP创建的 not ,但仅仅是用HTML绘制的。这也是一个跨越3个div /'pages'的多步调查。而且没有任何问题提交。

总结一下:我有两个不同的项目,每个项目都解决了我的一半问题。一个动态生成表单,另一个保存了我制作的静态表单。两种形式都包含各种复选框,无线电按钮和textareas。问题是,它们不会一起工作。当我点击提交按钮时,我希望表单能够回答这个div中的答案(你读到的几行代码):

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

尽管如此,这个div仍然是一样的。我删掉了$(“#submit”)。点击(function())来提醒('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;
        }                   

    })
    });

2 个答案:

答案 0 :(得分:0)

你需要一个错误的回报;在$(&#34;#answers&#34;)下.html(响应);在成功函数的范围内。让我知道这个是否奏效。祝你好运,凯文

答案 1 :(得分:0)

我刚刚在没有帖子的情况下尝试了上面的脚本,它运行正常。在执行此脚本之前是否已加载jquery,和/或您在控制台中是否有任何javascript错误?