2015-08-25 75 views
1

我使用超薄PHP框架解析數據,我試圖FORMDATA以下列方式使用Jquery.ajax()送:Jquery.ajax PUT PHP不

var data = new FormData(); 
data.append('some_name', 'some_data'); 
data.append('a_file', $('input[name=the_file_form_field]').get(0).files[0])); 

$.ajax({ 
    url: 'the_destination_url', 
    data: data, 
    processData: false, 
    contentType: false, 
    type: 'PUT', 
    dataType: 'json', 

    success: function(data, textStatus, jqXHR) { 
     //Processing result here 
    }, 

    error: function(jqXHR, textStatus, errorThrown) { 
     //Processing result here 
    } 
}); 

不過,我嘗試了以下方案:

  • 作品:FORMDATA沒有文件,加入_method = PUT和設置$就鍵入:POST
  • 不工作(PHP的不接收PUT數據) :FORMDATA沒有文件,設置$就鍵入:PUT
  • 不行的(方法保持POST):FORMDATA與文件,加入_method =把和設置$就鍵入:POST
  • 不工作(PHP沒有收到PUT數據):FORMDATA與文件,設置$就鍵入:PUT

有什麼我失蹤?

該應用程序要求它使用PUT請求,因爲這樣的POST請求是不可能的。

+1

請指定'不起作用'。服務器沒有正確響應嗎?或者ajax沒有收到正確的迴應? –

+0

服務器沒有正確接收(或解析)PUT數據,雖然 – xorinzor

+0

chrome控制檯中的請求主體清楚地顯示它已正確生成,但如果服務器接收到有效的PUT,我們現在能夠如何幫助您解決問題 - 請求,但可能無法正常工作?我認爲我們每個人都想成爲一名有遠見的人,但我們不是。 –

回答

1

我解決它利用人的意見張貼在:https://bugs.php.net/bug.php?id=26004

顯然PHP默默丟棄所有的POST數據每當post_max_size指令已超過。

除了post_max_size,檢查upload_max_filesize指令也很明智。

1

試着發送數據作爲一個對象。 例如

data: {'formData' : data}, 

你的Ajax請求應該像

$.ajax({ 
    url: 'the_destination_url', 
    data: {'formData' : data}, 
    processData: false, 
    contentType: false, 
    type: 'PUT', 
    dataType: 'json', 

    success: function(data, textStatus, jqXHR) { 
     //Processing result here 
    }, 

    error: function(jqXHR, textStatus, errorThrown) { 
     //Processing result here 
    } 
}); 
+0

這不起作用,因爲請求主體將產生[Object object],當請求類型爲GET或POST時,這會起作用 – xorinzor