liljaMedlem sedan juli 20041 183 inlägg Jag försöker få JQuery att skicka ett anrop med JSON data till en .ashx sida (.net) men jag får den bara att skickar url-encoded data. Vad gör jag för fel?
$.ajax({
type: 'POST',
url: 'TestJSON.ashx',
data: { SomeInfo: 'Janne', SomeMore: 'blabla' },
success: function(items) {
$.each(items, function(index, item) {
listitem = document.createElement('li');
listitem.innerHTML = item.FirstName + ' ' + item.LastName;
$('#customers').append(listitem);
});
},
dataType: 'json',
contentType: 'application/json'
});
Data jag får ser ut såhär: "SomeInfo=Janne&SomeMore=blabla" när jag vill ha "{'SomeInfo':'Janne','SomeMore':'blabla'}"
data: "{SomeInfo: 'Janne', SomeMore: 'blblbla' }"
har suttit med detta förra veckan med ;) det skall skickas som en sträng inte som ett js-objekt.
liljaMedlem sedan juli 20041 183 inlägg Ok, hur gör du för att skicka som en sträng då? Jag hittade
JSON.stringify({SomeInfo:"Janne",SomeMore:"blabla"})
vilket verkar fungera men jag är lite osäker på vilket stöd det finns i de olika webbläsarna för detta? Är de en del av JavaScript och bör fungera långt tillbaka?
JSON.stringify är om jag gissar rätt från: http://www.json.org/json2.js ? Och jag tror Douglas Crockford har nog gjort så att den bli rätt, annars är det bara att kolla i en alert vad JSON.stringify(....) bli i alla webbläsare.
liljaMedlem sedan juli 20041 183 inlägg Ja den fungerar men jag har inte inkluderat json2.js på min sida utan bara JQuery. Allt verkar fungera ändå? Är JSON del av JavaScript eller kommer den från något annat ställe?
Varför kan du inte infoga den?
Visst kan du infoga det med jquery, skapa script-element med json2 source
JSON är "skapad" av Doouglas Crockford(kan vara fler), http://tools.ietf.org/html/rfc4627
och han är en av många medlemmar i ECMA gruppen, vissa har inbyggd JSON parser (firefox exempelvis object.toSource() )
Vilken webbläsare testar du det på? du kanskre redan har JSON.stringify inkluderad på din sida?
liljaMedlem sedan juli 20041 183 inlägg IE8 och det enda jag inkluderar är JQuery. Men då borde borde json2.js finnas inkluderad i jquery?
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<!--<script type="text/javascript" src="JSONHelper.js"></script>-->
<script type="text/javascript">
// Normalt med jquery så använder man $(document).ready() men då vi anropar från
// Google så får vi använda denna istället
$(document).ready(function() {
var listitem;
// För att göra det så enkelt som möjligt finns det en inbyggd metod
// i jquery för att hämta json vid namn getJSON.
//var input = $.toJSON({ SomeInfo: 'Janne', SomeMore: 'blabla' });
$.ajax({
type: 'POST',
url: 'TestJSON.ashx',
data: JSON.stringify({SomeInfo:"Janne",SomeMore:"blabla"}),
success: function(items) {
$.each(items, function(index, item) {
// För varje objekt lägger vi till vår Customer i en lista.
// Observera att vi i vårt javascript använder samma namn på
// egenskaperna som de vi skapade i vår Customer-klass.
listitem = document.createElement('li');
listitem.innerHTML = item.FirstName + ' ' + item.LastName;
$('#customers').append(listitem);
});
},
contentType: 'application/json; charset=utf-8',
dataType: 'json'
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="TestButton" runat="server" OnClick="TestButton_Clicked" Text = "Click me!" />
<asp:Label ID="CountLabel" runat="server" />
<ul id="customers">
</ul>
</div>
</form>
</body>
</html>
Vad jag vet så har inte IE8 något JSON objekt, men jag kan ha fel, provar i alla webbläsare, annars är det ju bara att köra... annars ser jag inte varför du inte skulle ha möjligheter att lägga in json2.js filen.
verkar fungera i Firefox med... kanske ha fel att JSON är ett objekt i de flesta läsare nu (vet inte om <IE8 har det dock)
liljaMedlem sedan juli 20041 183 inlägg Ok, jag får kolla vidare på det. Det jag ville göra fungerar nu. Tack för hjälpen :)