我正在爲我們的客戶提供一個聯繫表單,該聯繫表單爲我們創建了具有自己的域的網頁。我們爲他們提供託管和網頁編輯器來創建他們的網站。當他們在他們的網站上創建聯繫表格時,訪問他們的網站並填寫表格與他們聯繫的人員將被髮送到我們的平臺,並向我們的客戶發送一封電子郵件,通知他/她有人填寫了他/她的聯繫表格。JQuery AJAX - 發送帶有附加文件的JSONP表格
爲了使它工作,我們在我們的客戶網頁上使用了一個jsonp
ajax調用來發送表單到我們的平臺,該平臺執行電子郵件模板併發送電子郵件。
現在的問題是,我們的客戶要求添加一個input
字段類型,以允許任何訪問其頁面的人將文件附加到表單,以便他們可以在聯繫人通知電子郵件中看到附加文件,但我可以' t找到一種方法來使用jsonp
,因爲它使用GET
方法來創建一個跨域請求和everthing我已經在Stackoverflow中進行了分解,討論了使用POST
方法來發送帶有表單的文件並獲取表單數據爲new FormData()
。
這裏是我的代碼試圖實施之前有:
var $form = $('form');
$form.submit(function(e){
e.preventDefault();
$.ajax({
url: url,
dataType: "jsonp",
data: $form.serialize(),
beforeSend: function() {
$form.data('allowSending', false); // To prevent multiple sendings while processing
},
success: function(data) {
alert(data.message);
$form.data('allowSending', true);
}
});
});
這是我試過的代碼,但預計它不處理:當發送
var $form = $('form');
$form.submit(function(e){
e.preventDefault();
$.ajax({
url: url,
processData: false,
contentType: false,
dataType: "jsonp",
data: new FormData(this),
beforeSend: function() {
$form.data('allowSending', false); // To prevent multiple sendings while processing
},
success: function(data) {
alert(data.message);
$form.data('allowSending', true);
}
});
});
(我嘗試過的代碼(第二個))試圖通過URL發送數據作爲對象,如:?callback=jQuery111107622947758095266_1459251318335&[object%20FormData]&_=1459251318336
我該如何解決這個問題?
在此先感謝。
問候。爲了使事情變得更加困難,表單是完全動態的,所以如果解決方案是手動傳遞參數等,它必須以動態的方式用for
循環。
您是否嘗試過輸入「POST」? –
默認情況下,jQuery ajax使用GET方法發送數據將其更改爲POST(在第二個中) –
@MineshPatel - 'dataType:「jsonp」,'強制GET並導致忽略'method'或'type'。 – Quentin