2012-07-12 27 views
12

Próbuję użyć JSON do zainicjowania żądania POST do interfejsu API.Korzystanie z żądania JSON POST

Znalazłem jakiś przykładowy kod, a zanim się zbyt daleko chciałem dostać, że praca, ale utknąłem ...

<html> 
<head> 
<script type="text/javascript"> 
function JSONTest() 
{ 
requestNumber = JSONRequest.post(
    "https://example.com/api/", 
    { 
     apikey: "23462", 
     method: "example", 
     ip: "208.74.35.5" 
    }, 
    function (requestNumber, value, exception) { 
     if (value) { 
      processResponse(value); 
     } else { 
      processError(exception); 
     } 
    } 
); 
} 
</script> 
</head> 
<body> 

<h1>My JSON Web Page</h1> 


<button type="button" onclick="JSONTest()">JSON</button> 

</body> 
</html> 

Jest to plik .html, których jestem działa w chrome. Nic się nie dzieje po kliknięciu przycisku ...

Chyba brakuje mi fragmentu javascript, który interpretuje odpowiedź JSON i może być wyświetlany? inaczej jakakolwiek inna rada?

+0

byłem pod wrażeniem, JSON był podzbiorem JavaScript ...? i tak JavaScript może go uruchomić bez problemu? – GK1667

+0

JSON to format wymiany danych. Współczesne przeglądarki mogą to zrozumieć, ale starsze przeglądarki potrzebują biblioteki, aby móc przekształcić ciągi JSON w obiekty JavaScript. Zalecam użycie biblioteki, takiej jak jQuery, aby ci w tym pomóc, ponieważ rozwiąże to również niektóre problemy ze zgodnością przeglądarek starszych klientów. – Phil

+0

Większość nowoczesnych przeglądarek ma obiekt JSON dostępny, ale JSONRequest nie jest natywnie dostępnym obiektem lub funkcją w oknie lub obiektach dokumentu. – kinakuta

Odpowiedz

27

Przykład użycia jQuery znajduje się poniżej. Nadzieję, że to pomaga

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<title>My jQuery JSON Web Page</title> 
<head> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script type="text/javascript"> 

JSONTest = function() { 

    var resultDiv = $("#resultDivContainer"); 

    $.ajax({ 
     url: "https://example.com/api/", 
     type: "POST", 
     data: { apiKey: "23462", method: "example", ip: "208.74.35.5" }, 
     dataType: "json", 
     success: function (result) { 
      switch (result) { 
       case true: 
        processResponse(result); 
        break; 
       default: 
        resultDiv.html(result); 
      } 
     }, 
     error: function (xhr, ajaxOptions, thrownError) { 
     alert(xhr.status); 
     alert(thrownError); 
     } 
    }); 
}; 

</script> 
</head> 
<body> 

<h1>My jQuery JSON Web Page</h1> 

<div id="resultDivContainer"></div> 

<button type="button" onclick="JSONTest()">JSON</button> 

</body> 
</html> 

Firebug proces debugowania

Firebug XHR debug process

+1

To doskonały przykład! Mój problem polega na tym, że jest on wysyłany do części "błąd żądania". Wymieniłem wszystko na dane z nonxample, ale nadal nie będzie działać. Z powodzeniem skontaktowałem się z tym API i odzyskałem respoose za pomocą funkcji zwijania PHP i wprowadzenia przez użytkownika apikey, metody i ip na stronie html, która wysyła do php. Jakieś inne pomysły, w jaki sposób mogę to osiągnąć i uzyskać odpowiedź za pomocą javascript? – GK1667

+0

Witam. Zaktualizowałem moją odpowiedź powyżej, właśnie zmieniłem procedurę obsługi błędów, która powinna dać ci trochę więcej informacji na temat błędu. Zwykle, jeśli ten komunikat o błędzie jest nazywany, zwykle jest to rodzaj błędu transport/cors, jak wspomniał Jason. Spróbuj zaktualizować kod i zobaczyć, jaki jest nowy błąd. Zdecydowanie zaleca się zainstalowanie Fiddlera lub użycie Google Chrome F12 Debug, aby można było zobaczyć "dokładnie" co się dzieje "pod maską". Zapraszam, aby do mnie wrócić :) – Phil

+0

Dziękuję bardzo. Naprawdę doceniam, że trzymasz się mnie w tej sprawie. Pracuję nad tym, aby uzyskać to razem przez kilka dni i nie mogę się połączyć! W każdym razie spróbowałem dodać do kodu. Daje tylko "0" z powrotem. Mam uruchomiony firebuga, jestem nowy w używaniu go, więc jeśli masz jakieś prośby o to, co chciałbyś, abym zbadał, chętnie to zrobię! – GK1667

0

Nowoczesne przeglądarki obecnie nie implementują JSONRequest (o ile wiem), ponieważ jest to teraz tylko wersja robocza. Znalazłem kogoś, kto zaimplementował go jako bibliotekę, którą możesz umieścić na swojej stronie: http://devpro.it/JSON/files/JSONRequest-js.html (pamiętaj, że ma kilka zależności).

W przeciwnym razie może zajść potrzeba użycia innej biblioteki JS, na przykład jQuery lub Mootools.

Powiązane problemy