【问题标题】:500 POST internal server error ajax500 POST 内部服务器错误 ajax
【发布时间】:2017-01-17 07:58:40
【问题描述】:

我刚开始学习 Ajax。我有一种情况,当我调用 ajax 时,我的控制台中就有了。

POST http://server1/cmsgovtsite/admin/announcement/remove_attachment500(内部服务器错误)

我正在使用 codeigniter 平台。我在 Stack Overflow 上参考过很多解决方案,但一直没能解决。

function remove(attachment_id) {                            
    var baseurl = $('#base').val();
    //alert(baseurl);
    //alert(attachment_id);

    $.ajax({
        url: baseurl + "admin/announcement/remove_attachment",
        // async: false,
        type: "POST",
        data: {
            attachment_id: attachment_id
        },
        datatype: "json",
        success: function(result) {
            $('#result1').html(result);
        }
    })
}
function remove_attachment() 
{
    // $this->new_announcement();
    // echo sdfsdfdfg;
    $id = $this->input->post('attachment_id');
    echo 'hello'.$id;
    $this->load->model('announcement_model');
    // $data['ajax_req'] = TRUE;
    $this->announcement_model->changestatus($id);
    // $this->load->view('announcement_edit',$data);
}
<button class="btn pull-right" type="button" onclick="remove(<?php echo $getannouncementfile['id'] ?>)">
    <i class="fa fa-minus-circle fa-1x" aria-hidden="true" title="Add more document" alt="Add more documents"/></i> 
    Remove Attachment
</button>

我必须补充一点,该错误仅在我加载模型时发生

【问题讨论】:

  • 您的代码在没有 ajax 的情况下工作?
  • alert(baseurl); 的值是多少?
  • @AlexandrMalyita-是的,没有 ajax 也可以正常工作
  • @HikmatSijapati-这只是提醒我的 baseurl
  • 你是如何管理路由的。admin/announcement/remove_attachment。如果你还没有管理路由,那么 url 中的第三个参数将作为函数参数。

标签: php jquery ajax codeigniter


【解决方案1】:

检查确保您的 .htaccess 或更改您的网址 如下所示

url: baseurl + "index.php/admin/announcement/remove_attachment",

【讨论】:

  • 像 url 一样改变你的 url:baseurl + "index.php/admin/announcement/remove_attachment",
  • @Safiul Alam Najel-什么都没发生。
  • 请转到config.php然后更改它。配置['csrf_protection'] = FALSE;
  • 你能在 jquery 中使用 id 获取你的基本 url correclty 吗?你的控制器路径是正确的吗?我的意思是它像:application->controller->admin->announcement
  • 是的,我已经回显了我正在通过控制器中的 ajax 传递的公告 ID
【解决方案2】:

&lt;?php echo $getannouncementfile['id'] ?&gt; 替换为&lt;?php echo $getannouncementfile['id']; ?&gt;

;

【讨论】:

  • 你能访问错误日志吗?请发布 完整 php 文件的内容
【解决方案3】:

使用 mozilla firefox 浏览器尝试此代码,因此在检查面板中,您将获得请求和响应数据的完整详细信息,并找出代码中的错误之处

如果 csrf_protection 为真,则检查您的配置文件,然后将其设置为假,然后尝试

【讨论】:

  • 当你在控制台中获得完整路径时,复制它并在 url 中运行,如果你得到输出,然后在配置文件中设置错误的 csrf_protection 模式
【解决方案4】:

我通过编辑控制器函数而不是调用模型解决了我的问题。 现在我的控制器如下

function remove_attachment() {

$id=$this->input->post('attachment_id');
$data=array(
            'status'    => '0',                                                                              );
$this->db->where('id',$id);
$this->db->update('tb_announcements_file',$data);
 //echo'One record deleted Successfully';
 exit;

}

感谢所有帮助过我的人..

【讨论】: