【问题标题】:Ajax not calling success functionAjax没有调用成功函数
【发布时间】:2015-07-12 05:32:06
【问题描述】:

我正在使用 ajax 验证来自而不重新加载页面。

脚本 Ajax

    function updateResult(tab){
            $.ajax({
                url:"requeteSpecimen.php",
                data:{datas:tab},
                dataType: 'text',
                async:false,
                success: function(data){
                    document.getElementById('resultat').innerHTML = '<p>'+data+'</p>';
                },
                error: function(data){
                    document.getElementById('resultat').innerHTML = '<p>ERROR</p>';
                }
            });
    }

    $("#filtre").submit(function(){
        <?php $tab=$this->request->data; ?>
        updateResult(<?php json_encode($tab);?>);
    });

</script>

requeteSpecimen.php

<?php echo "Success"; ?>

我的问题是ajax没有调用成功函数,我总是出现“错误”文本......

目前我还没有 requeteSpecimen.php 文件的代码,我只想调用成功函数。不知道是否有帮助,但我使用的是 cakePHP 3.0。

提前非常感谢。

【问题讨论】:

  • 那么你应该告诉我们你从服务器得到什么响应,检查你的萤火虫并告诉我们你请求的响应标签..
  • 查看浏览器的开发者工具。查看 JavaScript 控制台。它是否报告任何错误?查看“网络”选项卡。是否正在提出请求?它得到回应了吗?它们是否包含您期望的数据?错误函数传递了 3 个参数,如果您无法从控制台和网络选项卡中找出错误,请使用它们找出您遇到的错误类型。
  • 您不应该使用e.preventDefault() 来阻止表单提交吗?我也认为你有一个错误。网络选项卡或 JS 选项卡应该显示错误。保持选项卡打开,看看函数是否真的在调用并触发了 ajax。一旦我使用了$('.blah').click 而不是$('#blah').click 并想知道为什么它不起作用......
  • 在你的 ajax 中,添加 "type: POST" 怎么样
  • 不适用于“POST”:/

标签: javascript php jquery ajax cakephp-3.0


【解决方案1】:

你不会在 Cakephp 中调用类似的动作。

首先在你的一个控制器中设置一个动作,像这样从你的 $.ajax 函数调用 url。

function updateResult(tab){
        $.ajax({
            url:"/controller/request_specimen",
            data:{datas:tab},
            dataType: 'text',
            async:false,
            success: function(data){
                document.getElementById('resultat').innerHTML = '<p>'+data+'</p>';
            },
            error: function(data){
                document.getElementById('resultat').innerHTML = '<p>ERROR</p>';
            }
        });
}

您可以稍后为 request_specimen 添加一条路线并使其更漂亮。

在您的控制器中应该有一个名为:public function request_specimen() {} 的方法,它将像这样处理 ajax 请求:if($this-&gt;request-&gt;is(['ajax']) { /* Handle request */}

发送给函数的数据会在$this->request->data中;

【讨论】:

  • 感谢您的回复。我已经尝试过了,但它仍然不起作用:/我认为您可能没有使用 cakePHP 3.0,因为您给我的语法看起来像 cakePHP 1.3(不确定)。您对问题可能来自哪里还有其他想法吗? Ps:我不是拒绝你答案的人:/
  • 基本的语法是一样的
  • 检查error_log,如果你可以访问它,你收到什么样的错误信息,js中的data变量包含什么?控制台.log(数据);在脚本中并检查它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多