0

我花了很多时间寻找这个,也许我没有正确地接近这个,但我在点击提交后尝试 .submit 和 .post 。在其他情况下,我已经能够让 ajax 提交在不刷新的情况下正常工作,但是当我以这种方式这样做时,它就不起作用了。我很想知道为什么。

形式

<form id="search" action="process.php" method="post">
    Name: <input id="search_text" type="text" name="name" />
    <input type="submit" value="Submit" />
</form>

阿贾克斯

$('#search').submit(function() {
    $.post(
      $(this).attr('action'),
      $(this).serialize(),
      function(data){
        $('#page_nav').html(data.html_page_nav);
        $('#results').html(data.table_html);
      },
      "json"
    );
    return false;
});

这很有效,它会在不重新加载的情况下提交就好了

下面是我遇到问题的地方。

在 php 服务器端,我发回了我希望能够提交的 html,初始搜索会将其放入原始 html 页面中。

$html_page_nav = "
    <ul>
";
for($i=1; $i <= get_query_pages(get_query_count($query), 50); $i++) {
    $html_page_nav .= "
        <li>
            <form id='page_".$i."' action='process.php' method='post'>
            <input type='hidden' name='action' value='change_page'/>
            <input type='hidden' name='page' value='".$i."'/>
            <input type='submit' value='".$i."'>
            </form>
        </li>
    ";
}   
$html_page_nav .= "
    </ul>
";

我尝试做与上述相同的事情,但提交无法正常工作

            $(document).ready(function() {

                $('#page_1').submit(function() {
                    console.log("this will not display");
                    $.post(
                            $(this).attr('action'),
                            $(this).serialize(),
                            function(data){
                            },
                            "json"
                        );
                        return false;
                })
            ...other jquery
            });

此提交将无法正常工作,function() 将不会执行,它将像常规提交一样提交并转到 url,而不是在不刷新整个页面的情况下执行。

任何建议或方法将不胜感激。

提前致谢!

4

2 回答 2

1

委托提交操作以对将来加载的内容执行。默认情况下,附加到加载到 DOM 上的内容的正常事件处理程序,而不是将来会加载的事件处理程序,比如通过 Ajax。您可以使用 jQuery "on" 函数来委派对将来加载的内容的操作。

例如。

$('body').on('submit', '#page_1', function() {
  // do it here
});
于 2013-06-08T19:23:46.160 回答
0

我在使用 ajaxForm n all 时遇到了类似的问题。我刚刚使用了 $("#Form").validate(); 对于它,页面不会刷新

于 2013-06-08T20:27:29.743 回答