2013-08-22 45 views
1

我正在使用CasperJS處理我的銀行對賬單的刮刀,到目前爲止我已設法登錄並進入報表頁面。我完成了獲得聲明第一頁的表格,但我需要完成它。CasperJS POST通過AJAX不起作用

銀行的網頁可以選擇導出爲.txt文件(實際上是一種CSV),但爲了下載它,我必須能夠下載附件中的文件通過點擊按鈕提交表單時發送POST請求。

所以我想我可以通過AJAX做POST,得到響應並輸出它。我試着在螢火蟲控制檯上運行代碼,它可以工作,但由於某種原因,它在CasperJS中不起作用。

  this.then(function() { 
       eurl = "http://bankurl.com"; 
       response = this.evaluate(function() { 
       params = $("#lForm").serialize(); 
       $.ajax({ 
        type: "POST", 
        url: eurl, 
        data: params, 
        success: function (data) { 
         return data.responseText; 
        }, 
        error: function (xhr,status,error){ 
         return error; 
        } 

       }); 
      }); 
      this.echo(response); 
     }); 

回答

1

好了,掙扎着尋找一種方法來解決這個問題,我終於做了後,我只是把裏面的Ajax調用嘗試捕獲並發現錯誤是它沒有讀取eurl變量(我在評估之外聲明它)。我把它放在裏面,它工作。謝謝你的幫助

1

我沒能:

順便說一句,我一直在使用--web安全=無,仍不能正常工作

這是我正在努力做到這一點嘗試用你提供的代碼來測試它,但看起來好像你只是沒有從evaluate()返回任何東西。

return __utils__.sendAJAX(url, 'POST', params); 

你可能還需要調用CasperJS下列要求:

casperjs --ignore-ssl-errors=true /path/to/script.js 
+0

它不工作,我試過用原生js xmlhttprequest和\ __ utils __。sendAjax()casperJS方法,我也嘗試把ajax放在一個var中,所以我從ajax返回的值請求是該var的值,然後我返回它。什麼錯誤的是,它是如果我從螢火蟲控制檯執行它的工作:/ – davidaam

+0

sendAJAX()不工作,它返回null,我已經嘗試發送參數作爲JSON對象和作爲編碼字符串,沒有作品 – davidaam

+0

你試着在'this.echo(response)'周圍加上'this.then';'? – hexid