2012-04-13 7 views
1

Im Moment habe ich einen Benutzer, der viele Punkte auf einer Ajax Bing Karte erstellt. Wenn der Benutzer drückt Schaltfläche ‚Senden‘, würde Ich mag das alle Standorte in map.entities gespeichert bekommen, ich einen String mit XML-Format erstellen, und ich möchte es in meiner DB speichern:Senden von Daten an die Serverseite von der Client-Seite - UNGÜLTIG JSON PRIMITIVE: Standort

<locations> <location><lat><lon>1.234</lon></lat></location>.....</locations> 

, so nach meinem XML-String bauen, was aber kein Problem ist, ich speichern sie es in variablen Positionen und zu tun:

$. ajax({ 
type: "POST", 
url: "myPage.aspx/saveLocations" 
data: {"xmlLoc: x"}, 
async: true, 
cache: false, 
success: alert ("success" + msg) 
error: .... 

Aber leider scheint es dies nicht der Weg ist, meine Daten zu übergeben. Dies ist das einzige Mal, dass ich einen Erfolg bekomme, aber die msg ist UNDEFINED !!!

Wenn ich schreibe Daten: x, < - das Problem würde ich hier habe, ist, dass ich eine möglicherweise gefährliche Anforderung gesendet wird von dem Client erhalten

MY-Server-Side-Code:

[Web Method] 
public static string saveLocations(string s) 
{ 
    return s; //just for testing purposes 
} 

Ich bin nicht sicher, ob ich Json oder etwas anderes verwenden muss, ich bin ein ziemlicher Anfänger, also habe ich keine Ahnung von wo ich anfangen soll! Vielen Dank

Bearbeiten: Ich versuche eine andere Ausweichlösung, aber ich bekomme immer ungültige JSON primitiven Fehler !!!

var locations = '{ "location" : ['; 
function createBoundary() {       
      for (x = 0; x < map.entities.getLength(); x++) { 
       var pin = map.entities.get(x); 
       locations += '{ "latitude": "' + pin.getLocation().latitude +'", "longitude": "' + pin.getLocation().longitude + '"},'; 
      } 
locations += ']}'; 
jQuery.ajax({ 
       type: "POST", 
       url: "Profiles_Schedules.aspx/GetXmlLoc", 
       data: eval("(" + locations + ")"), 
       contentType: "application/json;charset=utf-8", 
       datatype: "json", 
       async: true, 
       cache: false, 
       success: function (msg) { 
        alert("Success " + msg.d); 
       }, 
       error: function (x, e) { 
        alert("The call to the server side failed. " + x.responseText); 
       } 
      }); 
} 
+1

zu arbeiten, was passiert, wenn Sie Ihre Daten als Datensatz: {"s: 'x'"} –

+0

Du kannst das nicht schreiben, ich bekomme einen unerwarteten Tocken} – test

Antwort

2

Versuchen Hinzufügen Datentyp:

dataType: "json", 

Auch ich denke, dass Ihre Daten sollten „s“ und nicht „xmlLoc“ sein, denn das ist, was bist du für in Ihre Aktion suchen. Und

versuchen, Ihre Aktion zu ändern:

[HttpPost] 
public static string saveLocations(string s) 
{ 
    return s; //just for testing purposes 
} 
+0

Vielen Dank, ich werde das jetzt ausprobieren! – test

+0

Ich habe Syntaxfehler Ich kann nicht einmal HttpPost auflösen, sollte ich bitte eine bestimmte Baugruppe referenzieren? – test

1

ich auf der Empfängerseite nicht sicher bin, aber Ihre Daten werden nicht in einem erkennbaren Format übergeben. jQuery.ajax() macht ein intelligent guess in das Datenformat, aber die schnellste Umwandlung für Sie JSON wäre:

data: '{"xmlLoc":"x"}' 

Die Angebote für das richtige JSON-Format erforderlich sind.

+0

vielleicht bin ich mir nicht sicher, aber ist es ein MUSS, "xmlLoc" auf der linken Seite dieses Codes einzugeben, den Sie mir gezeigt haben? Immer noch bekomme ich einen Fehler, der Aufruf an die Server-Seite fehlgeschlagen – test

+1

Die linke Seite sollte den Schlüssel der Post-Variable enthalten und die rechte Seite sollte den Wert enthalten. – ramblinjan

1

Versuchen Sie Ihren Code auf die folgende Veränderung:

data: {"s":"x"} 

Even on JSON's site Sie Ihren Schlüssel/Wert-Paare mit Anführungszeichen formatiert werden müssen, wenn Sie Zeichenfolge Zeichenfolge wollen. Ich würde vorschlagen, Ihren Schlüssel den gleichen wie Ihren Parameter zu nennen.

Per the MSDN on WebMethod Ich dachte zunächst, dass dies nicht über das WebMethodAttribute funktioniert, da es SOAP-Aufrufe verbraucht. this SO question ist jedoch insofern interessant, als dort angegeben wird, dass der JSON in das entsprechende SOAP-Format formatiert wird.Ganz nett :)

jedoch die oben hat mich noch stärker das Gefühl, dass Ihre json Schlüssel Ihre Methode Unterschrift des Namens übereinstimmen muss für die Serialisierung

+0

Eines meiner Probleme ist, dass ich ein JSON-Array dynamisch aufbaue! Können Sie bitte meinen Code erneut überprüfen? – test

+0

@test Ich habe es erneut überprüft und es sieht genauso aus? Nichts dynamisches was ich sehen kann. –

+0

Entschuldigung, ich habe es gerade jetzt gepostet! Ich hoffe, ich kann den Fehler finden :( – test

Verwandte Themen