【问题标题】:AJAX response returns html contentAJAX 响应返回 html 内容
【发布时间】:2018-03-17 22:40:22
【问题描述】:

我的 codeigniter 项目中有一个 AJAX 调用。这是我的代码:

在视图中:

$('#forgotPassword').click(function() {
        var base_url = '<?php echo base_url()?>'; 
        $('#forgotPasswordEmailError').text('');
        var email = $('#forgotPasswordEmail').val(); 
        console.log(email);
        if(email == ''){
            $('#forgotPasswordEmailError').text('Email is required');
        }else{
            $.ajax({
                url : base_url + 'Home/forgotPassword',
                type : 'POST',
                data : {email : email},
                success: function(data) {       
                    console.log(data);                  
                    //location.reload();
                }
            });
        }

    });

和控制器:

public function forgotPassword() { 
   $email = $this->input->post('email');
   echo $email; 
}

但响应仅包含我认为的 html 内容。我无法确定发生了什么。

【问题讨论】:

  • 那么响应应该是什么?即预期的结果是什么
  • 请将数据:{email : email} 替换为数据:{'email' : email},
  • @ankitunde 我只是返回从 ajax 请求发布的电子邮件 ID。但它会在我的视图页面中显示整个 html 代码
  • 在 echo $email 之后掷骰子;这就像一个魅力。

标签: javascript php jquery ajax codeigniter


【解决方案1】:

将您的 jquery 代码更改为

$('#forgotPassword').click(function() {
    var base_url = '<?php echo base_url()?>'; 
    $('#forgotPasswordEmailError').text('');
    var email = $('#forgotPasswordEmail').val(); 
    console.log(email);
    if(email == ''){
        $('#forgotPasswordEmailError').text('Email is required');
    }else{
        $.ajax({
            url : base_url + 'Home/forgotPassword',
            type : 'POST',
            data : {email : email},
            dataType:'json',
            success: function(data) {       
                console.log(data);                  
                //location.reload();
            }
        });
    }

});

更改您的控制器代码,如

public function forgotPassword() { 
   $email = $this->input->post('email');
   $response = ["email" => $email];
   echo json_encode($response);
}

【讨论】:

  • 为什么要使用json??而不是我的赞成票.. 似乎 OP 只是在测试 Ajax 调用的响应
  • 因为使用 json 我们可以在未来轻松添加更多数据以响应@Akintunde
  • 它的工作。谢谢。但是是否需要在ajax函数中设置dataType。
【解决方案2】:

代替

echo $email;

使用:

$response = ["email" => $email];

return json_encode($response);

并在客户端使用 JSON.parse 解析 JSON。

【讨论】:

  • 你可以通过ajax发送纯文本,为什么要使用json?
  • @madalinivascu 可以使用纯文本,但使用JSON 可以提供更多想法,将来我们可以添加更多数据来响应。
  • 我认为没有必要将dataType设置为json,因为只有一个值。但无论如何,它现在可以工作了
  • @geeth 我从来没有说过 dataType as json 是必需的。但是,建议发送 JSON 响应。
【解决方案3】:

嗨,也许我可以帮助别人,我遇到了同样的问题,在我的情况下,错误在这里“url : base_url + 'Home/forgotPassword'”

在这个例子中,我必须像这样的 url 一路传递:/anotherdirectory/Home/forgotPassword.php', 看看你的“网址”

$.ajax({ url : "改变这里工作"', 类型:'POST', 数据:{电子邮件:电子邮件}, 数据类型:'json', 成功:函数(数据){
控制台.log(数据);
//location.reload(); }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-10
    • 2017-07-03
    • 2019-01-09
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多