1

我有一个用户填写的表格,然后可以提交表格或预览数据。如果用户选择预览数据,我会将其组合成一个更好看的页面(而不是仅仅再次显示表单)。从这里他们可以按提交或返回表单。感谢这个论坛上的@JFK 和@jerdiggity,我有一个很棒的预览。现在,当我从预览 iframe 中按下提交时,我正在尝试使用名为 sendMessageclass.php 的文件调用一个函数。在我的预览窗格中,最后有这两个按钮:

    <a class="submit btn login-submit" name="saveData" href="javascript:;">Submit</a>
    <a class="closeFB btn login-submit" href="javascript:;">Back to Edit</a>

在 preview.php 文件的开头我有以下内容:

    $(document).ready(function(){
       $('#saveData').live('click', function() {
          $.post('classes/sendMessage.class.php?\__construct');
    return false;
    });

__construct 函数以:

    if(!empty($_POST)) {
         foreach ($_POST as $field => $value)   
          .........

它继续验证字段,然后将它们提交给数据库。我知道这部分有效,因为当我提交表单(不做预览)时,数据被插入到数据库中。当我按下提交时,我在 Firebug 中的错误是:

 TypeError: e[h] is not a function

我还尝试在 sendMessageclass.php 中添加以下行,以确保按下的是提交按钮,而不是预览按钮:

if (isset($_POST['submit'])) {

当我按下 preview.php 文件中的提交按钮时,有什么想法可以让我调用 sendMessageclass.php 吗?

4

1 回答 1

0

我想您可以尝试以下任一选项:

1)。替换name你的html的属性

<a class="submit btn login-submit" name="saveData" href="javascript:;">

通过id像这样的属性

<a class="submit btn login-submit" id="saveData" href="javascript:;">

...您不能name使用选择器引用具有属性的元素#saveData

检查此JSFIDDLE,您将看到单击链接并name="nameData"没有返回任何内容。

2)。替换您当前的脚本选择器和格式

$('#saveData').live("click", function(){ ... })

... 至

$("body").on("click", "a[name=saveData]", function(){ ... })

...不更改 html 并保留name属性。

请注意.live()它已被弃用,因此我们以.on()委托形式使用(尽管需要 jQuery 1.7+)

另请注意,您可以通过父容器的选择器body更改元素a[name=saveData]

于 2013-06-09T01:50:19.907 回答