【问题标题】:Ajax returning data in new pageAjax 在新页面中返回数据
【发布时间】:2017-06-24 07:55:50
【问题描述】:

我的控制器中有一个名为 form 的 php 函数,我想根据条件显示一些消息。

我在 if else 块内回显消息。但不是存储在 msg 参数中并以 AJAX 的成功函数中给出的格式显示,而是显示在新页面中回显的消息。

<script type="text/javascript">
        $("#sign_up").click(function() {

            var form_data = {
                firstName: $('#firstName').val(),
                secondName: $('#secondName').val(),
                email: $('#email').val(),
                password: $('#password').val()
            };
            $.ajax({
                url: "<?php echo site_url('form/submit'); ?>",
                type: 'POST',
                data: form_data,
                success: function(msg) {
                    if (msg == 'YES') {
                        $('#alert-msg').html('<div class="alert alert-success text-center">Your mail has been sent successfully!</div>'); }
                    else if (msg == 'NO') {
                        $('#alert-msg').html('<div class="alert alert-danger text-center">Error in sending your message! Please try again later.</div>'); }
                    else {
                        $('#alert-msg').html('<div class="alert alert-danger">' + msg + '</div>'); }
                }
            });
            return false;
        });
    </script>

感谢所有试图提供帮助的人!

【问题讨论】:

  • 在成功函数中添加alert(msg); 并检查会发生什么
  • 您的 ajax 请求似乎没有运行,没有看到完整的代码就帮不上忙!,form_data 定义在哪里?
  • site_url('form/submit'); 返回什么?因为 url 参数需要一个有效的 URI。
  • site_url() 是一个 Wordpress 函数...不是纯 PHP
  • 硬编码你的网址,它应该可以工作

标签: javascript php jquery ajax codeigniter


【解决方案1】:

尝试使用这种方式。

<script type="text/javascript">
    $("#sign_up_form").submit(function() {

        var form_data = {
            firstName: $('#firstName').val(),
            secondName: $('#lastName').val(),
            email: $('#email').val(),
            password: $('#password').val()
        };
        $.ajax({
            url: "<?php echo site_url('form/submit'); ?>",
            type: 'POST',
            data: form_data,
            success: function(msg) {
                if (msg == 'YES') {
                    $('#alert-msg').html('<div class="alert alert-success text-center">Your mail has been sent successfully!</div>'); }
                else if (msg == 'NO') {
                    $('#alert-msg').html('<div class="alert alert-danger text-center">Error in sending your message! Please try again later.</div>'); }
                else {
                    $('#alert-msg').html('<div class="alert alert-danger">' + msg + '</div>'); }
            }
        });
        return false;
    });
</script>

这里不使用点击事件,我建议使用提交事件,secondName: $('#secondName').val(), 中有错误,将其更改为secondName: $('#lastName').val(),。 你的表格将是

    <div id="alert-msg"></div>
 <?php 
      echo form_open("form/submit", array("id"=>"sign_up_form"));
  ?>
 <div class="input-group">
     <input type="text" class="form-control" name="firstName" placeholder="First Name" id="firstName">
     <input type="text" class="form-control" name="lastName" placeholder="Last Name" id="lastName">
 </div>

 <input type="email" class="form-control" name="email" placeholder="Email" id="email">
 <input type="password" class="form-control" name="password" placeholder="Password" id="password">

 <div style="text-align:center;margin-top:20px">
      <button type="submit" class="btn btn-primary" id="sign_up">Sign Up</button>
 </div>

【讨论】:

    【解决方案2】:

    首先您需要使用preventDefault() 函数,如下所述。它将帮助您停止将页面重定向到新页面。

    $("#sign_up").click(function(e) {
        e.preventDefault():
    

    第二次更正,在 Ajax 调用中添加dataType,如下所述。

    $.ajax({ 
           url: '<?php echo site_url('form/submit'); ?>',
           type: 'POST', 
           data: form_data, 
           dataType: 'json',
           success: function(msg) {
    

    这将对您有所帮助。如果它不起作用,请告诉我。

    【讨论】:

      猜你喜欢
      • 2014-10-10
      • 2014-03-13
      • 2020-02-09
      • 1970-01-01
      • 2010-11-11
      • 2015-09-23
      • 2021-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多