2012-11-03 28 views
1

我有一個需要將數據發佈到遠程服務器的Phonegap應用程序。但是,當我嘗試使用jQuery的$ .post時,它永遠不會進入回調。

這裏是我的javascript:

$(document).ready(function() { 
    $('form').submit(function() { 
     console.log('about to post'); 
     $.post('http://mysubdomain.mydomain.com/index.php', function(data) { 
      console.log('In callback'); 
      console.log(data); 
     }); 
    }); 
}); 

當我運行這一點,看看在Eclipse的logcat,我看到了「關於發佈」,但我從來沒有看到「回調」。我在我的服務器上的PHP文件中將這個腳本標記轉存到腳本標記中,以確保它正確無誤,當我刷新頁面時,我看到HTML控制檯中顯示的HTML。我已經在res/xml的config.xml文件中將所有域列入了白名單,所以我不明白爲什麼這不起作用。如果有人有任何見解,請讓我知道。謝謝!

回答

0

我想你從來沒有進入成功回調的原因是某種錯誤正在發生。

$(document).ready(function() { 
    $('form').submit(function() { 
     console.log('about to post'); 
     $.ajax({ 
      url: 'http://mysubdomain.mydomain.com/index.php', 
      data: {}, // your data (if any) should go here 
      dataType: 'application/json' // or whatever you expect back 
      success: function(data) { 
       console.log('In callback'); 
       console.log(data); 
      }, 
      error: function(error) { 
       console.log(error); 
      } 
     }); 
    }); 
}); 

這至少應該告訴你的錯誤...

+0

我上面的回答一致,除了它可能失敗,因爲你可以不.post的$到:與類似嘗試相同的請求除了提供頁面的位置以外的其他主機。這是可以避免的(不是問題)在phonegap,但你必須運行在Android/IOS模擬器 – olore

+0

感謝您的建議。我試過,並能夠打印出我收到的錯誤:{「readyState」:0,「responseText」:「」,「status」:0,「statusText」:「error」}。我嘗試了谷歌搜索,唯一的結果是關於跨域腳本問題。我已經在模擬器上和我的手機上嘗試了這一結果。也許我的Phonegap配置有問題嗎? – amandawulf

+0

readyState 0表示請求已被取消,從未發送。如果您認爲這是一個CORS問題,您可以使用--disable-web-security選項通過命令行在Chrome中運行它來進行確認。在Chrome devtools中,您還可以選擇「Log XMLHttpRequests」選項,這將讓您輕鬆檢查控制檯中的請求 – Andbdrew

相關問題