Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Ajax文件上载可用于xampp,但不能用于在线服务器_Php_Jquery_Json_Ajax_Xampp - Fatal编程技术网

Php Ajax文件上载可用于xampp,但不能用于在线服务器

Php Ajax文件上载可用于xampp,但不能用于在线服务器,php,jquery,json,ajax,xampp,Php,Jquery,Json,Ajax,Xampp,我有2个HTML页面。一个是用于添加帖子的表单(在本例中,我有一个输入类型文件),另一个是用于更新帖子的表单(在本例中,我没有输入类型文件)。两个表单都有相同id的按钮来执行ajax调用。PHP文件对于这两种表单都是相同的,它插入或更新帖子的tha数据。js文件获取用户输入的值并执行ajax调用 HTML(添加帖子) PHP 问题:在使用xampp的本地应用程序中,一切正常。我可以插入新帖子,我可以做更新。在在线服务器上,它只在更新时起作用。当我插入时,在日志错误中有一条消息,索引“id”、“v

我有2个HTML页面。一个是用于添加帖子的表单(在本例中,我有一个输入类型文件),另一个是用于更新帖子的表单(在本例中,我没有输入类型文件)。两个表单都有相同id的按钮来执行ajax调用。PHP文件对于这两种表单都是相同的,它插入或更新帖子的tha数据。js文件获取用户输入的值并执行ajax调用

HTML(添加帖子)

PHP

问题:在使用xampp的本地应用程序中,一切正常。我可以插入新帖子,我可以做更新。在在线服务器上,它只在更新时起作用。当我插入时,在日志错误中有一条消息,索引“id”、“video”和“title”未定义。就像$\u POST和$\u文件是空的一样。但是在控制台(带有console.log)中,我可以看到formData对象很好,所有的值都完美地附加了所有的索引。事实上,更新工作正常,数据与插入相同,但文件视频除外。可能是因为在insert中有一个输入类型“file”?但对于xampp,它是有效的。 我还尝试从CPanel禁用mod_安全性。但它的效果不一样。 有人有什么解决办法吗


Ps:如果代码不完美,很抱歉,但为了更好地理解,我必须做一个简短的版本。

好的,我解决了我的问题

问题是文件的大小。我在xampp上更改了它,但在服务器上没有

我认为一个关于文件大小的错误是自动报告的,
不需要支票。相反,在没有具体检查文件大小的情况下,我只有未定义索引的错误

通过启用错误报告并查看开发人员控制台开始。已经完成了。控制台中没有错误。唯一的错误是我在php文件中插入时在日志文件中。错误在php中。不是在js中$_邮件是空的。但只在在线服务器上。不在本地与XAMPhandling文件通常涉及使用带有POST方法的
$\u文件
superglobal。我知道很多。我不是一个JS的家伙,所以如果这是JS相关的,你将需要等待有人可以帮助。是的,你是对的_当我插入时,文件也是空的。我忘了说了。谢谢您在网络面板中检查请求时看到了什么?确保您的
urlToPHP
没有意外重定向,因为这样会丢失POST数据。
<form id="form">
   <input id="titleID" type="text" value="" required />
   <input type="file" id="inputVideo" required />
   <input type="submit" id="submitData" value="SEND DATA" />
</form>
<form id="form">
   <input id="titleID" type="text" value="SomeTitleValue" />
   <input type="hidden" id="idHidd" value="SomeIdValue" />
   <input type="submit" id="submitData" value="SEND DATA" />
</form>
$(document).ready(function() {
   $(document).on('submit', '#form', function(e) {
      e.preventDefault();

      // get values of inputs and create a formData object
      // if the value is undefined, append in formData a empty string; else append the value

      // Get id
      if ( $('#idHidd').val() != undefined ){
         var id= $('#idHidd').val();
         formData.append('id', id);
      } else {
         var id= ""
         formData.append('id', id);
      }

     // Get file video
     if ( $('#inputVideo')[0] != undefined ){
         var video= $('#inputVideo')[0].files[0]
         formData.append('video', video);
     } else {
         var video =""
         formData.append('video', video);
     }

     // Get title (always present)
     var title= $('#title').val();
     formData.append('title', title);


     // AJAX Call
     $.ajax({
        type: "POST",
        url: "urlToPHP", 
        dataType: "JSON",   
        processData: false,
        contentType: false,
        cache: false,
        data: formData,
        success: function(msg) { 
                    alert(msg)
        }
      });
   });
});
//include connect db   

//Get tite and id 
$id= $_POST['id'];
$title= $_POST['title'];

// if there isn't an id, i do an insert and get the video in $_FILES
if ($id == ""){
    $video= $_FILES['video'];

    // DO QUERY FOR INSERT NEW POST AND MOVES THE FILE ON SERVER
}

if ($id != ""){

    // DO QUERY FOR UPDATE A POST
}