jQueryを使用してフォーム送信をトリガーし、AJAXを使用してファイルを処理して応答を返すPHPスクリプトを呼び出そうとしています。ただし、問題は、フォームの送信時にファイルがアップロードされないことです。
HTML:
<div id="browseButton" class="step1Button" onclick="browseFile()">Browse</div>
<form method="post" id="fileForm" style="display:inline-block;">
<input id="browseInput" type="file" name="FileInput" style="display: none"/>
<label for="upload-click-handler"></label>
<input id="upload-click-handler" type="text" readonly />
<input id="submitForm" type="submit" style="display: none"/>
</form>
<div id="previewButton" class="step1Button pull-right" onclick="uploadFile()" style="background-color: #57a957">
Preview
</div>
jQuery:
function uploadFile() {
submitForm();
parseExcel();
}
var submitForm = function() {
$('#previewButton').click(function(){
$('#submitForm').click();
});
};
var parseExcel = function() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET",'default/ParseExcel',true);
xmlhttp.send();
console.log("made it past excel parse");
};
呼ばれるPHP:
public function actionParseExcel() {
print "made it to parse".PHP_EOL;
print "File:";
if($_FILES['FileInput']['tmp_name']) {
print_r($_FILES['FileInput']['tmp_name']);
}
else {
print "Not found";
}
print "Done.";
}
問題は、フォームが選択したファイルを送信しないことです。これが通常、「未定義のインデックス」エラーがスローされる理由です。でもその理由がわかりません。
ファイルを含むフォームを送信するには、enctype = "multipart / form-data"を使用する必要があります。しかし、私が知る限り、ajaxを使用してファイルを送信することはできません。
したがって、その解決策は、非表示のiFrameを使用することです。
がんばろう!
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加