Я пытаюсь создать страницу JQuery Mobile, которая загружает видео в Google App Engine Blobstore вместе с соответствующим названием, описанием и т.д.многокопийной форма с входным файлом JQuery Mobile
Вот HTML из форма.
<form class="form-horizontal" action="{{ upload_url }}" method="POST" enctype="multipart/form-data" data-ajax="false">
<input type="text" name="title" placeholder="Title" id="basic" value="" data-ajax="false" />
<input type="text" name="description" placeholder="Description" id="basic" value="" data-ajax="false" />
<input type="file" data-ajax="false" name="file" id="file">
<input type="submit" value="Submit" name="sumbit" data-theme="b" data-ajax="false">
</form>
HTML создан в Google App Engine с использованием этого кода.
class MobileUploadPage(webapp2.RequestHandler):
def get(self):
upload_url = blobstore.create_upload_url('/uploadvideo')
template_values = {
'upload_url': upload_url,
}
template = JINJA_ENVIRONMENT.get_template('mobileUpload.html')
self.response.write(template.render(template_values))
URL-адрес загрузки, который вы видите как действие формы, генерируется блобом с использованием следующего обработчика.
class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
def post(self):
upload = self.get_uploads()[0]
video = Videos(content=upload.key())
video.title = self.request.get('title')
video.description = self.request.get('description')
video.ratingDown = 0
video.ratingUp = 0
video.creator = users.get_current_user().nickname()
uniuqeIDFound = False
newID = random.randint(1000,9999)
while(uniuqeIDFound == False):
vids = db.GqlQuery("SELECT * "
"FROM Videos ")
uniuqeIDFound = True
for v in vids:
if (v.videoID == newID):
newID = random.randint(1,10000)
uniuqeIDFound = False
video.videoID = newID
db.put(video)
self.redirect('/home')
URL-адрес для загрузки создается правильно и отображается на странице. В версии браузера нашего сайта он отлично работает. Однако при попытке загрузить видео с iPhone через эту мобильную страницу JQM в blobstore форма не отправляется.
В документации JQM говорится, что многоформатный ввод формы с файлом не работает с AJAX, поэтому вы должны добавить тег data-ajax = false в родительскую форму. Я сделал это, но, похоже, это не помогает.
Может ли кто-нибудь понять, почему?
В соответствии с документами jQuery Mobile по [конфигурации по умолчанию] (http://demos.jquerymobile.com/1.0/docs/api/globalconfig.html), '$ .mobile.ajaxEnabled' по умолчанию соответствует' true' , Этот параметр как 'true' перехватывает представления форм и вместо этого отправляет XML-HTTP-запросы. Вы повторили эту настройку '$ .mobile.ajaxEnabled' на' false', как предложил Jay @? Кроме того, вы можете также включить то, что происходит в [Safari's Web Inspector for iPhone] (http://webdesign.tutsplus.com/articles/quick-tip-using-web-inspector-to-debug-mobile-safari--webdesign -8787) и связанный журнал, если на самом деле отправлен запрос формы? – Nicholas