AJAX注释表格不返回表达式Enge -Enking模板内容



所以我有一个基本的评论表格与jQuery表单插件相关(只有成员可以发布,因此没有名称/电子邮件字段):

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
  <script src="/assets_site/js/jquery.form.min.js"></script>
  <script>
    $(document).ready(function(){
      function ajaxReturn(data) {
        var messageContainer = $('.alert-box');
        var messageBody = $(data);
        messageContainer.html(messageBody);
      }// ajaxReturn(data)
      $('.member-review').ajaxForm({
        success: ajaxReturn
      });
    });
  </script>
</head>
<body>
    {exp:channel:entries
      channel='products'
      limit='1'
      disable='categories|member_data|pagination'
    }
      {exp:comment:form
        channel='products'
        form_class='member-review'
        return='notifications/success'
      }
        <div class="alert-box">
          {!-- Ajax Form Errors --}
        </div><!--.alert-box-->
        <label for="comment">Tell others what you think</label>
        <textarea name="comment" rows="8" class="required" id="comment"></textarea>
        <input type="submit" value="Submit">
      {/exp:comment:form}
    {/exp:channel:entries}
</body>
</html> 

并且,出于此演示的目的,我的成功模板不能更简单:

<p>Sumission Successful!</p> 

不幸的是,当我提交完整的表格时,没有返回数据。如果我将console.log($(data));添加到AjaxRetrurn函数中,我会得到一个空字符串。该评论已成功提交到数据库中,只是返回模板似乎并没有做到。

真的不确定为什么会发生这种情况。它正确返回错误消息,而不是成功模板。

ee v2.5.3

更新:这是一个视频,涵盖了我要做的事情的基础知识。我在EE之前成功完成了此操作,所以我想知道他们最近是否更改了某些东西以使其不再起作用?

文档https://github.com/malsup/form提到ajaxform仅准备提交表格,但不提交。运行此操作时会发生什么?:

$('.member-review').on('submit', function(e) {
    e.preventDefault(); 
    $(this).ajaxSubmit({
        target: '.alert-box'
    })
});

我没有使用jQuery表单插件,但是看起来它不如您期望通过ajax的表格)。

但是,对于如此简单的成功消息,确实不需要整个单独的模板。您可以在返回功能中执行此操作:

function ajaxReturn(data) {
    $('.alert-box').html('<p>Sumission Successful!</p>');
}

另外,如果您绝对必须使用单独的模板(为了与非JS浏览器或其他任何模板保持一致),则可以使用JQuery load()函数获取其内容:

function ajaxReturn(data) {
    $('.alert-box').load('/notifications/success');
}

第二个选项将导致您的服务器再一次呼叫,但这并不是什么大不了的。如果您想要最好的性能,请选择第一个选项。

更新:如果您的成功功能也返回错误,那呢?

function ajaxReturn(data) {
    if (data) {
        $('.alert-box').html(data);
    } else {
        $('.alert-box').html('<p>Sumission Successful!</p>');
    }
}

是否确认是否是错误?我也有类似的问题。我有一个正在使用较新的EE版本测试的开发网站,即使确实提交了Ajax帖子,AJAX帖子也永远不会返回成功消息,因为如果我刷新页面,我可以看到更新。在Live网站上,我正在运行一个较旧版本,并获得了成功和响应。直到我找到这篇文章之前,直到我发现服务器上是一件事情。

我还使用模板页面的负载更新,但是如果我可以使用JSON响应,那就不错了,这样我就不必向单独的页面进行额外的调用。这是我在Live(较旧的EE版本)上使用的,并且正常工作。

    var update_cart_form_options = { 
        success: update_cart,  
        dataType: 'json' 
    };
    function update_cart(data, statusText, xhr, $form)  {   
        if (data.success) {                                                   
            $("input[name=XID]").val(data.XID);
            $('#cart_total')        .html( data.cart_total );
            $('#cart_subtotal')     .html( data.cart_subtotal );
        }  
        return false; 
    }      
    $("#update_button").click(function(){
        $('#update_button').val('Processing...');
        var form = $(this).closest("form"); 
        $(form).ajaxForm(update_cart_form_options);
        $(form).submit();  
});

但是,使用最新的EE版本在开发站点测试上也无法使用相同的代码。

最新更新