Я использую плагин формы jquery для загрузки файла и получения HTML (или текста, или чего-либо еще) в обратном вызове.
Это работало нормально до 1,5, но как только я преобразовал в 1,5,обратный вызов никогда не происходит ТОЛЬКО ЕСЛИ файл был выбран в форме.Если это не так, происходит обратный вызов, и мой код срабатывает правильно.Это очень странно и очень специфично, потому что этого никогда не случалось с 1.4, и я серьезно консольно регистрировал и отлаживал каждую строку кода.
Вот пример кода JS:
var options= {
dataType:'html',beforeSubmit:function() {
$(field).val(filePath);
loaderdisplay("show");
$("#reuploadDocumentDialogForm").hide();
},
url:actionurl, // the url containing the below function
type:"POST",
success:function(responseText, statusText)
{
// If $_FILES was empty, the last IF fires. If not, NOTHING happens.
console.log(responseText);
console.log(statusText);
if (responseText=='success-1')
{
loaderdisplay("hide");
reportStatus(1, "Successfully reuploaded file.");
$("#reuploadDocumentDialogForm").css("display","inline");
$("#reuploadDocumentDialog").dialog('close');
}
else if (responseText=='success-0')
{
loaderdisplay("hide");
reportStatus(0, "There was an error.File was not uploaded.");
$("#reuploadDocumentDialogForm").css("display","inline");
}
else if (responseText=='error uploading file')
{
loaderdisplay("hide");
reportStatus(0, "File was not uploaded.Try to make the file size smaller.");
$("#reuploadDocumentDialogForm").show();
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
// THIS NEVER EVER HAPPENS regardless of what I do
alert(textStatus+" - There was an error submitting the form: "+errorThrown);
}
};
$('#reuploadDocumentDialogForm').ajaxForm(options);
А здесьпример фрагмента кода PHP:
public function reuploaddocumentAction()
{
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
if (!empty($_FILES))
{
$tempFile = $_FILES['reuploadDocumentDialogFormFile']['tmp_name'];
$targetFile = $this->_getParam("reuploadDocumentDialogFormTargetFile");
$result = move_uploaded_file($tempFile,$targetFile);
die('success-'.$result);
}
else
{
die('error uploading file');
}
}
Я попытался вернуть die (json_encode (array ("success" => $ result)));также (и изменил dataType в параметрах формы на JSON, и я попытался изменить dataType на текст и оставить штамп в виде строки. Ничего не работает - я просто не могу ввести обратный вызов успеха, если я на jQuery1.5И файл был выбран. Он входит в него просто замечательно, если файл не был выбран.
Также стоит отметить: файл загружен нормально! Я просто никогда не ввожу обратный вызов! Любые идеи? Спасибо