2014-01-10 2 views
1

Я написал приложение Phonegap, и я хотел бы знать, как я могу отправить форму Django с помощью Javascript или JQuery. Я уже реализовал JSON API, используя Tastypie.Отправить форму для DJANGO из приложения Phonegap с помощью JAVAScript

Может ли кто-нибудь предоставить мне некоторые идеи или какие-либо указания о том, как реализовать такую ​​функцию?

ответ

1

Вам просто нужно сделать ajax-вызов tashypie api url в нижнем формате.

$.ajax({ 
     type: 'POST', 
     url: site_url+'api/v2/user/login/', 
     data: '{"username": "developer", "password":"imagine2"}', 
     processData: false, 
     crossDomain: true, 
     success: function (response, textStatus, xhr) { 
       console.log('jquery worked'); 
       //results=JSON.stringify(response); 
       setCookie("sessionid", response.sessionid); 
       setCookie("app_version", response.app_version); 
       window.location.href = 'home/'; 
       $('#overlay').hide(); 
     }, 
     error: function (res) { 
     msg = (res.responseText) ? res.responseText : res.statusText; 
     console.log(msg+",res.status="+res.status); 
     alert(msg); 

     }, 
     dataType: "json", 
     contentType: "application/json; charset=utf-8" 
    }); 

Также необходимо включить кросс-домен.

0

Существует несколько способов сделать это. Поскольку вы используете API с tastypie, я предлагаю не отправлять форму самостоятельно, а извлекать данные формы перед отправкой формы с помощью JavaScript. На отправке вы передаете данные, которые вы хотите отправить в орган запроса, в конечную точку API.

В качестве примера у вас может быть конечная точка api для записей в блоге, скажем, ее http://example.com/api/v1/entry. Учитывая Ваш API позволяет запросы междоменное (например, через CORS) вы могли бы сделать что-то простое, как это «подать» свою форму (например, создание новой записи):

$('#myForm #mySubmitButton').click(function() { 
    $.post('http://example.com/api/v1/entry', $('#myForm').serialize(), function(data) { 
     // deal with the response data 
    } 
}); 

Я не уверен, что tastypie поддерживает этот вид структура данных. Немного более длинная версия этого может быть, чтобы сделать что-то вроде этого (здесь я уверен, что tastypie не поддерживает его), который отправляет данные в формате JSON:

$('#myForm #mySubmitButton').click(function() { 
    var data = {'title': $('#myForm #titleInput').val(), 'description': $('#myForm #descriptionInput').val()}; 
    $.post('http://example.com/api/v1/entry', data, function(data) { 
     // deal with the response data 
    } 
}); 

Эти примеры не касаются проверки формы, обработки ошибок и т. д. Вы могли бы заглянуть в tastypie validation для более подробной информации и потенциально также добавить специальную проверку на соответствие с помощью HTML5. Я также предлагаю вам использовать более сложную инфраструктуру JavaScript, например AngularJS, для приложений с одной страницей, таких как приложение PhoneGap. JQuery скоро раздует ваше приложение, когда оно вырастет.

Смежные вопросы