2015-06-24 27 views
0

我有一個完全運行的ASP.NET Webform應用程序(.aspx),它使用jQuery AJAX向服務器(CodeBehind)發送和檢索數據。對於我的下一個項目,我需要使用Phonegap重新創建此應用程序,以使其與移動平臺無關。在Phonegap應用程序中將數據從jQuery AJAX發送到ASP.NET

我試圖使用該處理數據庫連接和所有需要的方法,以使應用程序的工作相同代碼隱藏文件。

// File-structure 

Application 
    App_Code 
    pages 
     Default.aspx (with codebehind) 
     phonegapapp 
      www 
      - index.html (with jquery AJAX calls) 
    ... 

從index.html文件,我試圖讓到Default.aspx.cs連接文件訪問必需的功能:

// phonegapapp/www/index.html 

$(function() { 
    $.ajax({ 
     type: "POST", 
     ... 
     url: "../../Default.aspx/testFunction", 
     // tried with only one ../ and going to root and follow file structure but non is working. 
     ... 
    }); 
}); 

我得到顯示該文件的錯誤沒有找到:

XMLHttpRequest cannot load file:///C:/Application/pages/Default.aspx.cs/testFunction. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource. 
+1

你真的不應該爲此使用頁面或網頁/頁面方法。您應該使用[ASP.NET Web API](http://www.asp.net/web-api)。或者,如果您想要最小化,請使用通用處理程序(.ashx)或自定義處理程序。基本上,您的Web服務器應該公開一個端點,並且您的頁面應該通過AJAX與該端點通信。頁面(.aspx)不需要參與。將服務器端和客戶端分割成單獨的項目可能是一個好主意,因爲看起來您嘗試在客戶端上使用.aspx頁面。 – mason

+0

你想從你的phonegap項目加載ASP文件嗎? –

+0

此外,您不能使用相對路徑來引用暴露的端點,因爲端點將位於服務器上。你需要一個完整的URL,例如'https:// example.com/customer/1'。最好將頁面URL嵌入客戶端的配置中,然後在爲服務器調用構建URL時,將基本URL與要檢索的資源的路徑組合在一起。 'var BaseURL ='https://example.com'; $ .ajax({url:BaseURL +'/ customer /'+ customerId})'或者這些行的內容。 – mason

回答

0

你不能執行/訪問aspx文件wihtin phonegap應用程序。只需要將aspx文件放在Asp.Net支持的Web服務器(如IS)後面,然後使用相對路徑(如http://localhost/default.aspx)加載調用ajax,然後您將能夠獲得響應。

相關問題