0

我目前正在使用 Jquery 加载函数将 php 内容加载到 Div 中。但是当我使用我的 php 电子邮件表单时,它会变成全白并且索引页面会丢失(我的意思是主布局)。无论如何我可以使用 Jquery 将 Insch.php 加载回 div,即使它需要执行?

 <form id="contactform" method="POST" action="insch.php"> <--- this is my Form

  $('.menut').click(function () {
       var phpFile = $(this).attr('id') + '.php';
      /* alert(phpFile)*/
       $.get(phpFile, function (data) {
           $('#box1').html(data);
       });
       return false;
   });                   <---- my Jquery load function(on index)
4

2 回答 2

0

我看到您将返回的数据直接添加到$("#box1"). 如果您的 php 文件返回Html,您应该dataType:'html'在 ajax 请求中进行设置。

于 2013-04-17T20:19:25.360 回答
0

对不起,你的问题有点难以理解。我有点猜测,但听起来你在问如何在不刷新页面的情况下提交表单。如果是这样,您可以执行以下操作:

$('.menut').click(function() {
    var phpFile = $(this).attr('id') +'.php';

    $('#box1').load(phpFile, function() { // <-- this is your ready function

        // once the form has been added to the page,
        // add the 'submit' event listener
        $('#contactForm').submit(function(e) {

            // prevent the form from submitting regularly (causing a page refresh)
            e.preventDefault();

            // get the data from the form
            var data = $(this).serialize();

            // submit the form via AJAX and put the response in #box1
            $('#box1').load($(this).attr('action'), data);
        });
    });
});

更新:

您的ready函数是您在 AJAX 调用中创建的要在内容加载完成时执行的函数(当内容准备好时)。它也可以称为回调函数、完成函数或成功函数。

看看我在上面第四行代码中添加的注释。我已经指出了我所说的准备好的功能。

在您的问题中,您使用了这个:

$.get(phpFile, function (data) {
    $('#box1').html(data);
});

这相当于:

$('#box1').load(phpFile);

这会将响应(您的表单)phpFile#box1. 这function (data) { ... }是你准备好的功能。那就是您应该将submit事件绑定到表单的地方。

如果您load()按照我的建议切换到该方法,那么您只需将一个新函数(这将是您的就绪函数)作为该方法的第二个参数传递给该load()方法,这是我在原始答案中给出的解决方案。

于 2013-04-17T20:27:26.380 回答