Javascript 如何在CodeIgniter 3.0中使用AJAX上传文件?

Javascript 如何在CodeIgniter 3.0中使用AJAX上传文件?,javascript,php,jquery,ajax,codeigniter,Javascript,Php,Jquery,Ajax,Codeigniter,我有一个带有文本框和文件上传的表单。当用户单击按钮时。文本框值和文件上载名称保存到数据库中,文件上载到服务器。我没有使用AJAX的经验。因此,非常感谢您的帮助 这是我的表格: <form enctype="multipart/form-data" accept-charset="utf-8" name="f_complaint" id="f_complaint"> <input type="text" name="i_complaint" id="id_complai

我有一个带有文本框和文件上传的表单。当用户单击按钮时。文本框值文件上载名称保存到数据库中,文件上载到服务器。我没有使用AJAX的经验。因此,非常感谢您的帮助

这是我的表格:

<form enctype="multipart/form-data" accept-charset="utf-8" name="f_complaint" id="f_complaint">
     <input type="text" name="i_complaint" id="id_complaint" class="cl_complaint" />
     <input type="file" name="i_file" id="id_file" class="cl_file" />
     <input type="button" id="btn_upl" value="Save your complaint" class="btn btn-primary" />
</form>

代码中有什么错误?甚至警报也没有被触发。我不想使用插件代码中有什么错误?甚至警报也没有被触发

这就是问题所在。 1.您的警报在AJAX成功时被调用,这意味着一旦AJAX调用成功完成。但是在CI控制器中,您正在重定向ajax调用,因此您的ajax调用永远不会完成,也永远不会返回到“success function(returndata):”块

现在,要解决这个问题,只需替换下面的代码

  //return false;
  redirect('app/'); replace with,
  echo "upload failed";exit;


此返回值将在“returndata”js变量中返回

我建议您使用此库:

wiki库中有codeigniter的说明: CTRL+F->Codeigniter


我一直在使用它,而且效果很好:)

这里是使用ajax和codeigniter上传文件的参考资料。我认为这是使用ajax上传文件的最佳方式

https://code.tutsplus.com/tutorials/how-to-upload-files-with-codeigniter-and-ajax--net-21684

控制台中有错误吗?据我所知,该url看起来也不有效,它需要一个完整的path@SergioAlen无错误我在其他项目中使用相同的url(同样具有上载文件的功能,但不使用ajax),它可以使用
$(“#f_投诉”)。在(“提交”上,函数(e){e.preventDefault();//代码的其余部分}
,而不是单击,并检查警报是否仍然无法正常工作。此外,请在控制器中使用AJAX.Debug参考注释中共享的链接@sintakonte以上载/传递图像文件。放回“文本”;出口在“saveadd”函数的第一行,在浏览器的开发者控制台中检查AJAX请求。更新答案。请再查一下。
  //return false;
  redirect('app/'); replace with,
  echo "upload failed";exit;
 redirect('complaint/add'); replace with
 echo "upload finished";exit;
https://code.tutsplus.com/tutorials/how-to-upload-files-with-codeigniter-and-ajax--net-21684