2013-11-21 76 views
1

我正在試圖找到從Javascript發送變量到PHP而不使用GET方法的最佳方法。我找到了一種方法,通過POST方法與AJAX派:發送帶有POST的Ajax變量到PHP

<form method="POST" id="post" enctype="multipart/form-data"> 
       <input type="file" name="image_upload[]" id="img1" /> 
       <input type="file" name="image_upload[]" id="img2" /> 
       <input type="file" name="image_upload[]" id="img3" /> 
       <input type="text" name="description" id="description" /> 
       <textarea class="intext" name="editor" id="editor"></textarea> 
       <input type="text" name="state" id="state" disabled="true" /> 
       <input type="text" name="city" id="city" disabled="true" /> 
       <input type="submit" id="submit" /> 
      </form> 

,我試圖用jQuery的提交表單:

$('#post').submit(function (event) { 
    event.preventDefault(); 
    $.ajax({ 
     type: "POST", 
     url: "cpage.php", 
     data: { 
      'variable1': 'content var1', 
       'variable2': 'content var2' 
     }, 
     success: function() { 
      $('#post'), $('form').unbind('submit').submit(); 
     }, 
     error: function (name, err, desc) { 
      alert(desc); 
     } 
    }); 

注:變量「位置」已之前宣佈並正常工作。

結果:我在警報中看到「內部服務器錯誤」。有任何想法嗎?

+2

你可以發佈php –

+3

錯誤是在PHP(或可能是一個.htaccess文件)。請發佈PHP。 –

+1

僅供參考如果沒有隱藏的iframe或HTML5 File API,您無法單獨使用ajax上傳文件/圖像。 –

回答

1

首先 - 告訴我們服務器端發生了什麼。

而現在有關文件發送:

您應該使用FormData元素文件提交扔阿賈克斯,其不老的瀏覽器的支持,瀏覽器將支持這種有:即> 9,鉻> 7,歌劇> 12 safari> 5,android> 3 gecko mobile> 2,opera mobile> 12。

使用這樣的事情:

$('#post').submit(function (event) { 
       event.preventDefault(); 

     if(window.FormData !== undefined) //make sure that we can use FormData 
     { 

      var formData = new FormData($('form#post')); 
         $.ajax({ 
           type: "POST", 
           url: "cpage.php", 
           data: formData , 
           //Options to tell jQuery not to process data or worry about content-type. 
           cache: false, 
           contentType: false, 
           processData: false, 
           success: function (data) { 
                 console.log(data); // <- for debugging 
                 $('#post'), $('form').unbind('submit').submit(); 
           }, 
           error: function (name, err, desc) { 
            alert(desc); 
           } 
         }); 
      } else { 
       //fallback 
      } 
     }); 

正如你可以看到我添加console.log(data),嘗試尋找在返回的數據,以確定任何其他問題。

+0

謝謝你的回答。但是,頁面沒有達到cpage.php(所以,因此沒有服務器端)。而且我不需要發送formData,因爲我可以使用PHP來接收這些數據,對吧?我只需要通過POST方法發送兩個javascript變量。 –