2013-04-28 73 views
0

我遇到下面的問題記錄 的問題是,該網站正在處理此腳本中使用jQuery的形式和Ajax:如何使用jquery ajax提交表單進行機械化登錄? (蟒蛇)

function form_login() 
{ 
    if($('#main form p.button.disabled').length) return false; 

    $('#success').hide(); 
    $('#error').hide(); 

    $.post(AJAX_PATH + '/login/', $(form).serialize(), function(data) { 


     if(data.result) { 

      $('#success').html(data.response).show(); 
      setTimeout(function() { redirect(data.redirect); }, 3000); 
     } 
     else { 

      $('#error').html(data.response).show(); 
      $('#login').val(''); 
      $('#password').val(''); 
      $('#main form p.button').addClass('disabled'); 
     } 

    }, 'json'); 

    return false; 
} 

我試圖與機械化手動上傳與此代碼:

h = Http() 
data = dict(login=user, password=password) 
resp, content = h.request(url, "POST", urlencode(data)) 
print "Post response: " , resp 

響應去如下:

{'status': '200', 'content-length': '3257', '-content-encoding': 'gzip', 'transfer-encoding': 'chunked', 'vary': 'Accept-Encoding', 'server': 'nginx', 'last-modified': 'Fri, 15 Mar 2013 14:40:44 GMT', 'connection': 'keep-alive', 'etag': '"11c2203d-cb9-4d7f79fc19300;4d7f7b508f640"', 'date': 'Sun, 28 Apr 2013 23:15:07 GMT', 'content-type': 'text/html'} 

我有什麼,現在怎麼辦?

回答

0

好的,我想通了,我已經登錄了我的代碼。但是當我轉到另一頁時,我失去了登錄狀態。所以我嘗試不完全手動POST,但使用機械化。因爲它然後自己處理餅乾和一切。這是我得到的:

LoginUrl = "http://mywebsite.com/ajax/login/" 
LoginData = dict(login=user, password=password, remember=1) 
LoginHeader = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0"} 
LoginRequest = urllib2.Request(LoginUrl, urlencode(LoginData)) 
LoginResponse = br.open(LoginRequest) 

它的工作原理! :-D