jQuery를 사용하고 있으며 Ajax로 파일을 업로드하고 싶습니다. 나는 몇몇 수색을하고 그것이 불가능하다는 것을 발견했다.jQuery 용 "Form Plugin"과 함께 Ajax 파일 업로드
그러나 하나의 jQuery 플러그인 인 jQuery Form Plugin이있어 Ajax를 통해 파일을 업로드 할 수 있습니다.
아주 잘 작동하지만 특별한 문제가 있습니다. 여기 내 코드입니다 :
$('#question-form').submit(function() {
var serialAnswers = '';
// Create a query string given some fields
// Format of the query string : answers[0][fr_fr][0]=a1fr&answers[0][fr_fr][1]=2&answers[0][en_uk][0]=a1en&answers[0][en_uk][1]=6&...
$('#question-answers > div').each(function(idx, elt) {
$('div[lang]', $(elt)).each(function(idxLang, eltLang) {
var lang = $(this).attr('lang');
serialAnswers += 'answers[' + idx + '][' + lang + '][0]=' + $("[answerpart=display]", $(eltLang)).val();
serialAnswers += '&answers[' + idx + '][' + lang + '][1]=' + $("[answerpart=value]", $(eltLang)).val() + '&';
});
});
$(this).ajaxSubmit({
datatype: "html",
type: "POST",
data: serialAnswers,
url: $(this).attr("action"),
success: function(retour) {
$('#res-ajax').html(retour);
}
});
return false;
});
당신이 볼 수 있듯이, 나도 같은 옵션과 더불어, $(this).ajaxSubmit()
호출하여 $.ajax
전화를 교체해야합니다. 또한, 일부 필드에 따라 PHP 코드로 전송하기 위해 쿼리 문자열 (코드에서 serialAnswers)을 만들어야합니다.
다음은 업로드 할 파일이 없었을 때했던 것입니다. 난 그냥 양식 필드를 직렬화 및 내 쿼리 문자열 이름 serialAnswers 추가 :
$.ajax({
datatype: "html",
type: "POST",
data: $(this).serialize() + '&' + serialAnswers,
url: $(this).attr("action")
success: function(retour) {
$("#res-ajax").html(retour);
}
});
을하지만 내 문제는 양식 플러그인 (PHP 파일에서) 내 추가 데이터 (쿼리 문자열) 그런 식으로 전송하는 것입니다 :
data: { key1: 'value1', key2: 'value2' }
그러나 나는 JSON 오 내 쿼리 문자열을 변환하는 방법을 알고하지 않습니다
Array
(
[question_heading_fr_fr] => something
[question_heading_en_uk] => nothing
[question_type] => 5
[0] => a
[1] => n
[2] => s
[3] => w
[4] => e
[5] => r
[6] => s
[7] => [
[8] => 0
[9] => ]
[10] => [
[11] => f
[12] => r
[13] => _
[14] => f
[15] => r
[16] => ]
....
)
문서에 따르면,이 같은 데이터 옵션에 JSON 개체를 통과해야 bject 그리고 만약 PHP 측에서 배열로 해석된다면.
해결책이 있습니까?
편집 : 나는 iframe을를 사용하는 경우에도, 내가 양식에서 제공하지 않는 정보를 쿼리 문자열을 추가하는 방법을 모른다 (내 위의 코드에서 serialAnswer
).
[Uploadify] (http://www.uploadify.com/)? – ifaour
가능한 경우 플래시를 사용하지 않는 것이 좋습니다 –