Avatar billede srofhest Nybegynder
29. juli 2011 - 14:50 Der er 6 kommentarer

jquery og json.

Hej eksperter, jeg har et problem med JQuery og Json.
Min kode ser således ud. Burde det ikke virke? eller hvad er problemet?

$.ajax({
            type: "GET",
            cache: false,
            url: link,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: "{}",
            success: function (data) {
                alert("Navn:" + data.Navn + ". Alder:" + data.Alder);
},
            error: ajaxFailed
        });

{ "Navn":"MitNavn", "Alder":"99" }
Avatar billede olsensweb.dk Ekspert
29. juli 2011 - 16:59 #1
spørgsmålet er nok bedre placeret i javascript http://www.eksperten.dk/spm/Programmering/Script/JavaScript/
har du prøvet at parse din json string ?? http://api.jquery.com/jQuery.parseJSON/
success: function (msg) {
    data = $.parseJSON(msg); // jquery's egen vist nok af ældre dato
    // data = jQuery.parseJSON(msg); // jquery's egen vist nok af ældre dato
    // data = JSON.parse(msg); // nyere browseres indbygget               
    alert("Navn:" + data.Navn + ". Alder:" + data.Alder);                   
}


nb:
dataType: "json",    // denne linje fejler hos mig, så jeg sletter den
, error: ajaxFailed // slettede jeg i min test
Avatar billede Slettet bruger
30. juli 2011 - 10:36 #2
Er det ikke bare data der mangler?
sendData = { Navn : "MitNavn"
                        ,Alder: "99" }

$.ajax({url : link
            ,type : "GET"
            ,cache : false
            ,contentType : "application/json; charset=utf-8"
            ,dataType : "json"
            ,data : sendData
            ,success : function(returData)
                {
                alert("Navn:" + returData.Navn + ". Alder:" + returData.Alder)
                }
            ,error : function(xhr, error)
                {
                alert("Ajaxfejl:"+error
                +"\ndata:"+data
                +"\nxhr.responseText:"+xhr.responseText)
                }
            });
Med errorhandler hvis der stadig sku' være noget.. (f.eks. syntaxfejl i.. PHP?)
Avatar billede Slettet bruger
30. juli 2011 - 10:37 #3
Hov, data nede i error, skal rettes til sendData
Avatar billede olsensweb.dk Ekspert
30. juli 2011 - 12:14 #4
nu fik jeg functionen til at virker uden bruge af parse :), og den accepterer dataType.
det eneste jeg har gjort er at rykke komma ned på næste linje, og tilføjet errorhandler.

function hentdata(){            
    var link = "tmp.php";
    $.ajax({
        type: "GET"
        ,cache: false
        ,url: link
        ,contentType: "application/json; charset=utf-8"
        ,dataType: "json"
        // ,data: "{}"
        ,success: function (data) {                   
            alert("Navn:" + data.Navn + ". Alder:" + data.Alder);                   
        }
        ,error : function(xhr, error){
            alert("Ajaxfejl:"
            +error             
            +"\nxhr.responseText:"+xhr.responseText)
        }               
    });
}


#2 "Er det ikke bare data der mangler?"
hos mig gør det ikke nogle forskel,om jeg angiver det eller ej.

så er det bare om spørgeren kan få det til at virke

nb: jeg er stadig begynder i jquery
Avatar billede Slettet bruger
30. juli 2011 - 12:32 #5
Det er nok fordi funktionen i den anden ende ikke skal bruge noget input..
- data ender jo "bare" som et parameter-input: $_GET['data']
Avatar billede olsensweb.dk Ekspert
30. juli 2011 - 13:19 #6
#5
nej det er klart, det mig der ikke lige tænkte mig om
tmp.php ser jo kun sådan ud
<?php
$ar=array("Navn"=>"MitNavn", "Alder"=>"99");
echo json_encode($ar); // retunerer {"Navn":"MitNavn","Alder":"99"}
?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester