使用JAVAScript从Phonegap应用程序向DJANGO提交表单

使用JAVAScript从Phonegap应用程序向DJANGO提交表单,javascript,jquery,python,django,cordova,Javascript,Jquery,Python,Django,Cordova,我已经编写了一个Phonegap应用程序,我想知道如何使用Javascript或Jquery向Django提交表单。我已经使用Tastypie实现了一个JSON API 有谁能为我提供一些关于如何实现这样一个功能的想法或指导吗?您只需以下面的格式对TastypieAPI url进行ajax调用即可 $.ajax({ type: 'POST', url: site_url+'api/v2/user/login/', data: '{"username": "d

我已经编写了一个Phonegap应用程序,我想知道如何使用Javascript或Jquery向Django提交表单。我已经使用Tastypie实现了一个JSON API


有谁能为我提供一些关于如何实现这样一个功能的想法或指导吗?

您只需以下面的格式对TastypieAPI url进行ajax调用即可

$.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"
    });

您还需要启用跨域。

有多种方法可以做到这一点。由于您使用的是带有tastypie的API,我建议您不要提交表单本身,而是在使用JavaScript提交表单之前提取表单数据。提交时,将要在请求正文中提交的数据传递给API端点

例如,您可以为博客条目提供一个api端点,比如它的
http://example.com/api/v1/entry
。考虑到您的API允许跨域请求(例如通过CORS),您可以做一些简单的事情来“提交”表单(例如创建新条目):

我不确定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
    }
});
本示例不涉及表单验证、错误处理等。。您可以查看更多详细信息,还可以使用HTML5添加特定于前端的验证。我还建议您使用更复杂的JavaScript框架,如PhoneGap应用程序等单页应用程序。JQuery很快就会让你的应用程序膨胀

$('#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
    }
});