2016-06-01 14 views
2

Ich versuche, einige Daten an eine VB.NET WebMethod per AJAX POST.Senden von JSON-Daten an eine WebMethod

JSON.stringify(myRows) enthält:

{ 
    "myRows":[ 
     { 
     "UniqueId":"188", 
     "Description":"hello", 
     "ClientId":"321", 
     "SecretKey":"dftete", 
     "Active":"checked", 
     "Delete":"delete icon" 
     }, 
     { 
     "UniqueId":"191", 
     "Description":"sfsss", 
     "ClientId":"fsdfs", 
     "SecretKey":"cvvcvb", 
     "Active":"unchecked", 
     "Delete":"delete icon" 
     }, 
     { 
     "UniqueId":"201", 
     "Description":"I am test singh", 
     "ClientId":"23424242", 
     "SecretKey":";kfddgdfl;ghf", 
     "Active":"unchecked", 
     "Delete":"delete icon" 
     }, 
     { 
     "UniqueId":"202", 
     "Description":"Yay mai ban ne wala hun", 
     "ClientId":"n.csdvnsssl", 
     "SecretKey":"nj.ssdnfvel,vgd", 
     "Active":"unchecked", 
     "Delete":"delete icon" 
     } 
    ] 
} 

Mein AJAX-Aufruf ist:

$.ajax({ 
     type: "POST", 
     url: "MyWebServiceUtilities.asmx/savesocialloginkeys", 
     data: JSON.stringify(myRows), 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (response) { 
      //some code here 
     }, 
     failure: function (response) { 
      //some code here  
     }, 
     error: function (response) { 
      //some code here 

     } 
    }); 

Server-Seite Web-Methode, ist dies:

<WebMethod()> _ 
Public Function savesocialloginkeys(ByVal myrows As String) As String 
    Dim response As String = "" 
    '------------Some code here------------------------------- 
    '------------Response will be based on results as per code------- 
    Return response 
End Function 

Wenn ich versuchte zu debuggen, zeigt der AJAX-Aufruf Fehler an!

+1

'contentType' ist die Art der Daten, die Sie senden, in diesem Fall sollten Sie: contentType:" charset = UTF-8 "überprüfen http://Stackoverflow.com/questions/18701282/what -is-content-type-und-datentyp-in-ajax-request – CMedina

+0

Willkommen bei StackOverflow! Sie sollten alle Fehler, die Sie beim Debuggen sehen, immer posten, damit andere verstehen, was schief läuft. –

Antwort

-1

Sie ein JSON-Objekt an den Server sendet nicht, so dass Sie ‚text/html‘ als content wie verwenden müssen:

   $.ajax({ 
        type: "POST", 
        url: "MyWebServiceUtilities.asmx/savesocialloginkeys", 
        data: JSON.stringify(myRows), 
        contentType: "text/html; charset=utf-8", 
        dataType: "json", 
        success: function (response) { 
         //some code here 
        }, 
        failure: function (response) { 
         //some code here  
        }, 
        error: function (response) { 
         //some code here 

        } 
       }); 
+0

Ich habe contentType geändert, weiterhin Fehler nicht behoben. – Sunny

+0

könnten Sie den Fehler posten, der Ihre Ajax-Anfrage anzeigt? das wird uns helfen zu verstehen, was falsch ist –

0

Der Ajax-Aufruf fehlschlägt, weil Sie senden ein JSON-Objekt an die WebMethod, aber der WebMethod akzeptiert einen String. ASP.NET versucht schlau zu sein und konvertiert das mit String versehene JSON-Objekt in ein reales Objekt. Wenn die Anforderung also an Ihre WebMethode gelangt, handelt es sich nicht mehr um eine Zeichenfolge.

Sie benötigen ein einfaches Objekt, das Ihre JSON Struktur repräsentiert:

Public Class SocialConnectionModel 
    Public Property UniqueId As String 

    Public Property Description As String 

    Public Property ClientId As String 

    Public Property SecretKey As String 

    Public Property Active As String 

    Public Property Delete As String 
End Class 

Da Ihr JSON-Objekt ein Array von Objekten unter dem myRows Schlüssel enthält, das ist, was die WebMethod Unterschrift akzeptieren muss:

Imports System.Web.Services 
Imports System.ComponentModel 

<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 MyWebServiceUtilities 
    Inherits System.Web.Services.WebService 

    <WebMethod()> 
    Public Function savesocialloginkeys(myRows As SocialConnectionModel()) As Boolean 
     ' Do something with the data 

     ' Return true if succeeded 
     Return True 
    End Function 

End Class 

Wenn Sie dies noch nicht getan haben, ist die Zeile <ScriptService()> wichtig, da Sie diese WebMethode von AJAX aufrufen.

Jetzt sollte Ihre AJAX-Aufruf wie erwartet:

$.ajax({ 
    type: "POST", 
    url: "MyWebServiceUtilities.asmx/savesocialloginkeys", 
    data: JSON.stringify(myrows), 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (response) { 
     if (response && response.d) { 
      console.log("success"); 
     } 
    }, 
    failure: function (response) { 
     // some code here 
    }, 
    error: function (response) { 
     // some code here 
    } 
}); 

Ein Vorschlag: Versuchen Sie, Ihre JSON-Daten mit den entsprechenden Typen zu bauen, statt Strings für jede Eigenschaft. Zum Beispiel sollte die UniqueId-Eigenschaft eine ganze Zahl sein, und die Active-Eigenschaft könnte eine bool sein (ich vermute). Mach nicht alles stringly typed, es sei denn du musst. :)

Verwandte Themen