2012-10-24 115 views
0

使用django 1.4,我试图发布,它似乎不是发布propely,我request.GET.get('type',''),但它打印空字符串和邮政响应来(未定义)空,但GET工作正常。django ajax发帖不发帖子并返回空邮件

我Django的看法:

@csrf_protect 
def edit_city(request,username): 
    conditions = dict() 

    #if request.is_ajax(): 
    if request.method == 'GET': 
     conditions = request.method 
#based on http://stackoverflow.com/a/3634778/977622  
      for filter_key, form_key in (('type', 'type'), ('city', 'city'), ('pois', 'pois'), ('poisdelete', 'poisdelete'), ('kmz', 'kmz'), ('kmzdelete', 'kmzdelete'), ('limits', 'limits'), ('limitsdelete', 'limitsdelete'), ('area_name', 'area_name'), ('action', 'action')): 
       value = request.GET.get(form_key, None) 
       if value: 
        conditions[filter_key] = value 
        print filter_key , conditions[filter_key] 

    elif request.method == 'POST': 
     print "TIPO" , request.GET.get('type','')  
     #based on http://stackoverflow.com/a/3634778/977622  
     for filter_key, form_key in (('type', 'type'), ('city', 'city'), ('pois', 'pois'), ('poisdelete', 'poisdelete'), ('kmz', 'kmz'), ('kmzdelete', 'kmzdelete'), ('limits', 'limits'), ('limitsdelete', 'limitsdelete'), ('area_name', 'area_name'), ('action', 'action')): 
      value = request.GET.get(form_key, None) 
      if value: 
       conditions[filter_key] = value 
       print filter_key , conditions[filter_key] 

     #Test.objects.filter(**conditions) 
    city_json = json.dumps(conditions) 

    return HttpResponse(city_json, mimetype='application/json') 

这里是我的javascript代码:

function getCookie(name) { 
    var cookieValue = null; 
    if (document.cookie && document.cookie != '') { 
     var cookies = document.cookie.split(';'); 
     for (var i = 0; i < cookies.length; i++) { 
      var cookie = jQuery.trim(cookies[i]); 
      // Does this cookie string begin with the name we want? 
      if (cookie.substring(0, name.length + 1) == (name + '=')) { 
       cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); 
       break; 
      } 
     } 
    } 
    return cookieValue; 
} 
var csrftoken = getCookie('csrftoken'); 

function csrfSafeMethod(method) { 
    // these HTTP methods do not require CSRF protection 
    return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); 
} 
function sameOrigin(url) { 
    // test that a given url is a same-origin URL 
    // url could be relative or scheme relative or absolute 
    var host = document.location.host; // host + port 
    var protocol = document.location.protocol; 
    var sr_origin = '//' + host; 
    var origin = protocol + sr_origin; 
    // Allow absolute or scheme relative URLs to same origin 
    return (url == origin || url.slice(0, origin.length + 1) == origin + '/') || 
     (url == sr_origin || url.slice(0, sr_origin.length + 1) == sr_origin + '/') || 
     // or any other URL that isn't scheme relative or absolute i.e relative. 
     !(/^(\/\/|http:|https:).*/.test(url)); 
} 
$.ajaxSetup({ 
beforeSend: function(xhr, settings) { 
    if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) { 
     // Only send the token to relative URLs i.e. locally. 
     xhr.setRequestHeader("X-CSRFToken", 
          $('input[name="csrfmiddlewaretoken"]').val()); 
    } 
} 
}); 

$.post(url,{ type : type , city: cityStr, pois: poisStr, poisdelete: poisDeleteStr, kmz: kmzStr,kmzdelete : kmzDeleteStr,limits : limitsStr, area_nameStr : area_nameStr , limitsdelete : limitsDeleteStr},function(data,status){ 
        alert("Data: " + data + "\nStatus: " + status); 
        console.log("newdata" + data.kmz) 
       }); 

我失去了什么?

回答

0

明白了,问题是我不得不将这个request.GET.get('type','')改为这个request.POST.get('type','')