webForumDet fria alternativet

Får inte JQuery till att skicka JSON

8 svar · 641 visningar · startad av lilja

liljaMedlem sedan juli 20041 183 inlägg
#1

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'}"

voigtann1Medlem sedan juni 20019 519 inlägg
#2

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
#3

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?

voigtann1Medlem sedan juni 20019 519 inlägg
#4

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
#5

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?

voigtann1Medlem sedan juni 20019 519 inlägg
#6

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
#7

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>
voigtann1Medlem sedan juni 20019 519 inlägg
#8

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
#9

Ok, jag får kolla vidare på det. Det jag ville göra fungerar nu. Tack för hjälpen :)

137 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)