2016-07-29 2 views
0

Ich versuche, eine Anroid Mobile Application zum Speichern von Daten in einer Remote-SQL-Datenbank zu machen. Ich benutze Cordova Project in Visual Studio 2015. Ich habe einen Webservice, der funktioniert und Name, Telefon & Profilinformationen und Speichern von Daten in SQL Server ordnungsgemäß. Jetzt versuche ich diesen WebService von Android Mobile Application aufzurufen, aber $ Ajax Call to Webservice funktioniert nicht. Die Kontrolle erreicht den Webservice nicht.Speichern von Daten mit Ajax Aufruf an WebService mit Json als Parameter funktioniert nicht In Cordova Project für Android

Ich habe bereits WhiteSpace Plugin hinzugefügt, aber es funktioniert immer noch nicht.

Dies ist die ursprüngliche HTML-Datei per Vorschläge

<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">  
     <meta name="format-detection" content="telephone=no"> 
     <meta name="msapplication-tap-highlight" content="no"> 
     <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width"> 
     <script src="../scripts/jquery-3.1.0.min.js"></script> 
     <script src="../scripts/jquery.mobile-1.4.5.min.js"></script> 
     <script type="text/javascript" charset="utf-8"> 
      function onLoad() { document.addEventListener("deviceready", onDeviceReady, false); } 
      function onDeviceReady() { alert("Device is Ready to User"); } 
      function SaveContact() { 
       var Contact = new Object(); 
       Contact.Name = "Harvinder"; 
       Contact.Phone = "9819862717"; 
       Contact.Profile = "Director" 
       var myData = JSON.stringify(Contact); 
       var myURL = "http://gsecurity.net/JsonDAL.asmx/SaveContact"; 
       alert(typeof (myData)); 
       $.ajax({ 
        type: "POST", url: myURL, data: myData, contentType: "application/json; charset=utf-8", dataType: "json", 
        success: function (msg) { alert("Success"); }, 
        error: function (e, status) { alert("Failed:" + e.statusText); } 
       });} 
     </script> 
    </head> 
    <body onload="onLoad()"> 
     <h1>Call Ajax to Save Json Data with WebService</h1> 
     <button onclick="SaveContact();">Click Here to Save Test Contact</button> 
     <script type="text/javascript" src="cordova.js"></script> 
     <script type="text/javascript" src="scripts/platformOverrides.js"></script> 
     <script type="text/javascript" src="scripts/appBundle.js"></script> 
    </body> 
</html> 

Hier Code der modifiziert ist, die

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Security-Policy" content="default-src *; style-src * 'unsafe-inline' 'unsafe-eval'; script-src * 'unsafe-inline' 'unsafe-eval'"> 
    <meta name="format-detection" content="telephone=no"> 
    <meta name="msapplication-tap-highlight" content="no"> 
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width"> 
    <script type="text/javascript" charset="utf-8"> 
      document.addEventListener("deviceready", onDeviceReady, false); 
      function onDeviceReady() { alert("Version 1.10 is Ready"); } 
      $.support.ajax = true; 
      $.support.cors = true; 
      $.mobile.allowCrossDomainPages = true; 
      function SaveContact() { 
       var Contact = new Object(); 
       Contact.Name = "Harvinder"; 
       Contact.Phone = "9819862717"; 
       Contact.Profile = "Director"; 
       var myData = JSON.stringify(Contact); 
       var myURL = "http://gsecurity.net/JsonDAL.asmx/SaveContact"; 
       alert("DataType:" + typeof (myData)); 
       $.ajax({ 
        type: "POST", contentType: "application/json", dataType: "json", 
        url: myURL, data: myData, allowCrossDomainPages: true,     
        success: function (msg) { alert("Success"); }, 
        error: function (e, status) { alert("Failed:" + e.statusText); } 
       }); 
       alert("Completed"); 
      } 
    </script> 
</head> 
<body> 
    <h2>Call Ajax to Save Json Data with WebService</h2> 
    <button onclick="SaveContact()">Click Here to Save Test Contact</button> 
    <script type="text/javascript" src="../scripts/jquery-3.1.0.min.js"></script> 
    <script type="text/javascript" src="../scripts/jquery.mobile-1.4.5.min.js"></script> 
    <script type="text/javascript" src="cordova.js"></script> 
    <script type="text/javascript" src="scripts/platformOverrides.js"></script> 
    <script type="text/javascript" src="scripts/appBundle.js"></script> 
</body> 
</html> 
noch nicht funktioniert ist

My Webservice ist hier das funktioniert prima, wenn sie direkt per URL zugegriffen

Imports System.Web.Services 
Imports System.Web.Services.Protocols 
Imports System.ComponentModel 
Imports System.Data 
Imports System.Data.SqlClient 

<System.Web.Script.Services.ScriptService()> 
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> 
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> 
<ToolboxItem(False)> 
Public Class JsonDAL 
    Inherits System.Web.Services.WebService 
    <WebMethod> 
    Public Function SaveContact(Name As String, Phone As String, Profile As String) As String 
     Try 
      Dim ConStr = ConfigurationManager.ConnectionStrings("Data").ConnectionString 
      Dim Con = New SqlConnection(ConStr) 
      Dim Qry = "INSERT INTO Contacts (Name,Phone,Profile) VALUES ('" + Name + "','" + Phone + "','" + Profile + "')" 
      Dim Cmd = New SqlCommand(Qry, Con) 
      Cmd.CommandType = CommandType.Text 
      Con.Open() 
      Cmd.ExecuteNonQuery() 
      Con.Close() 
      Return "Done" 
     Catch ex As Exception 
      Return ex.Message 
     End Try 

    End Function 

End Class 

Antwort

0

Es gibt viele Fehler in Ihrem Code.Sie müssen nicht hinzufügen deviceReady Ereignis OnLoad Ereignis etc etc. geändert ich Ihren Code versuchen this.Check Ihre Datenbank Ich habe einen Datensatz name = "TestFromHomen"

<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
     <meta http-equiv="Content-Security-Policy" content="default-src *; style-src * 'unsafe-inline' 'unsafe-eval'; script-src * 'unsafe-inline' 'unsafe-eval'"> 
 
     <meta name="format-detection" content="telephone=no"> 
 
     <meta name="msapplication-tap-highlight" content="no"> 
 
     <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width"> 
 
     <script src="../scripts/jquery-3.1.0.min.js"></script> 
 
     <script src="../scripts/jquery.mobile-1.4.5.min.js"></script> 
 
     <script type="text/javascript" charset="utf-8"> 
 
      document.addEventListener("deviceready", onDeviceReady, false); 
 
      function onDeviceReady() { 
 
\t \t \t alert("Device is Ready to User"); 
 
\t \t \t } 
 
      function SaveContact() { 
 
       var Contact = new Object(); 
 
       Contact.Name = "Harvinder"; 
 
       Contact.Phone = "9819862717"; 
 
       Contact.Profile = "Director" 
 
       var myData = JSON.stringify(Contact); 
 
       var myURL = "http://gsecurity.net/JsonDAL.asmx/SaveContact"; 
 
       alert(typeof (myData)); 
 
       $.ajax({ 
 
        type: "POST", 
 
\t \t \t \t \t url: myURL, 
 
\t \t \t \t \t data: myData, 
 
\t \t \t \t \t contentType: "application/json", 
 
\t \t \t \t \t dataType: "json", 
 
        success: function (msg) { alert("Success"); }, 
 
        error: function (e, status) { alert("Failed:" + e.statusText); } 
 
       }); 
 
\t \t \t \t } 
 
\t \t \t 
 
\t \t \t \t 
 
     </script> 
 
    </head> 
 
    <body> 
 
     <h1>Call Ajax to Save Json Data with WebService</h1> 
 
     <button onclick="SaveContact()">Click Here to Save Test Contact</button> 
 
     <script type="text/javascript" src="cordova.js"></script> 
 
     <script type="text/javascript" src="scripts/platformOverrides.js"></script> 
 
     <script type="text/javascript" src="scripts/appBundle.js"></script> 
 
    </body> 
 
</html>

+0

Vielen Dank für Ihre Response.I Code kopiert, wie es ist aber es funktioniert immer noch nicht. Ich habe .apk in meinem Android Phone installiert, aber es geht nicht über den Zeilenalarm hinaus (typeof (myData)). Ich habe einen Datensatz TestFromHomen in der Datenbank hinzugefügt. Wenn ich den Code über den angegebenen Code riss, wurde der Fehler ausgegeben. "Message": "Uncaught ReferenceError: $ ist nicht definiert", "Dateiname": "http://stacksnippets.net/js", "lineno": 33, "colno": 17 } – Saimbhi

+0

Sind jquery und jqury mobile js-Datei im Ordner scripts? – Homen

+0

Ja beide .js Dateien sind da. Derselbe Code funktioniert im normalen asp.net-Projekt, funktioniert aber nicht im Cordova-Projekt. Das bedeutet, dass Code und Webservice perfekt sind. Ich denke, irgendwo stimmt etwas nicht, was die Android-App daran hindert, auf eine externe URL zuzugreifen. Ich habe auch das Meta-Tag geändert, aber es funktioniert immer noch nicht. – Saimbhi

Verwandte Themen