Potrzebuję wysłać dane JSON do adresu URL i przetworzyć odpowiedź, która jest również danymi JSON. Jak mogę to zrobić za pomocą vanilla javascript, tzn. Bez bibliotek innych firm? Muszę również ustawić nagłówki żądań. Czy ktoś mógłby mi podać przykład, jak to zrobić?Jak wykonać żądanie AJAX, aby opublikować dane JSON i przetworzyć odpowiedź?
6
A
Odpowiedz
13
OK Oto jak zrobić zarówno GET i POST w wanilii JavaScript, tj żadnych zewnętrznych bibliotek jak jQuery, w tym jak ustawić żądania nagłówki:
// Just to namespace our functions and avoid collisions
var _SU3 = _SU3 ? _SU3 : new Object();
// Does a get request
// url: the url to GET
// callback: the function to call on server response. The callback function takes a
// single arg, the response text.
_SU3.ajax = function(url, callback){
var ajaxRequest = _SU3.getAjaxRequest(callback);
ajaxRequest.open("GET", url, true);
ajaxRequest.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
ajaxRequest.send(null);
};
// Does a post request
// callback: the function to call on server response. The callback function takes a
// single arg, the response text.
// url: the url to post to
// data: the json obj to post
_SU3.postAjax = function(url, callback, data) {
var ajaxRequest = _SU3.getAjaxRequest(callback);
ajaxRequest.open("POST", url, true);
ajaxRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajaxRequest.setRequestHeader("Connection", "close");
ajaxRequest.send("data=" + encodeURIComponent(data));
};
// Returns an AJAX request obj
_SU3.getAjaxRequest = function(callback) {
var ajaxRequest;
try {
ajaxRequest = new XMLHttpRequest();
} catch (e) {
try {
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
return null;
}
}
}
ajaxRequest.onreadystatechange = function() {
if (ajaxRequest.readyState == 4) {
// Prob want to do some error or response checking, but for
// this example just pass the responseText to our callback function
callback(ajaxRequest.responseText);
}
};
return ajaxRequest;
};
używać go tak:
function processResponse(responseText) {
// Response text is a json:
var obj = JSON.parse(responseText) // won't work all browsers, there are alternatives
// Do something with obj
....
}
var jsonToPost = .... // whatever your json is
var url = ... // the URL to post to
_SU3.postAjax(url, processResponse, jsonToPost);
Powiązane problemy
- 1. Żądanie ajax Liferay i odpowiedź JSON
- 2. Alamofire Uzyskaj żądanie i odpowiedź JSON
- 3. jQuery Krzyż Domain Żądanie, aby uzyskać odpowiedź JSON bez zwrotnego
- 4. "400 Bad Request" odpowiedź na żądanie AJAX
- 5. Odpowiedź jQuery AJAX JSON zwraca klucz "d"
- 6. Odpowiedź Ajax przebiega niewłaściwie
- 7. Dowiedz się, jak długo trwało żądanie Ajaxa, aby wykonać:
- 8. Jak wykonać żądanie Ajax przez NodeJS do punktu końcowego
- 9. Prześlij dane obiektu Json, aby uzyskać odpowiedź tablicy Json za pomocą volley w Androidzie
- 10. Wyślij żądanie AJAX do strony .aspx i zwróć JSON
- 11. jak debugować dane podczas używania json/ajax
- 12. Jak wykonać żądanie synchroniczne za pomocą Alamofire?
- 13. Jak wyśmiać żądanie AJAX?
- 14. Jak mogę wysłać skompresowany (gzip) JSON jako odpowiedź na żądanie Ajax z Java?
- 15. Odpowiedź na żądanie http z obiektem json w portlecie
- 16. jQuery AJAX "200 OK", ale żadna odpowiedź dane
- 17. tinyMCE ajax, aby zapisać dane
- 18. Jak śledzić żądanie jQuery AJAX?
- 19. JSON IPHONE: Jak wysłać żądanie JSON i pobrać dane z serwera?
- 20. Zmienne kontekstowe Django i odpowiedź ajax
- 21. Prześlij dane i odzyskaj odpowiedź za pomocą PHP Curl?
- 22. Ajax jona i odpowiedź przekierowania z serwera
- 23. Wyciąg Json odpowiedź
- 24. Symfony2 - Jak wykonać zewnętrzne żądanie?
- 25. libcurl Żądanie HTTP, aby zapisać odpowiedź na zmienną - C++
- 26. Uzyskaj odpowiedź z pliku PHP za pomocą AJAX
- 27. Żądanie Ajax PUT
- 28. jak przekazać dane JSON do restful internetowych usług przez ajax, a także jak uzyskać dane JSON?
- 29. Żądanie i odpowiedź HTTP jax-ws
- 30. Railsy danych ajax json 414 żądanie URI zbyt duże
Nie sądzę, że byłbyś w stanie uzyskać dane json, chyba że dane są wysyłane przez serwer jako json_encoded –
zobacz moją odpowiedź, powinien zrobić to, co chcesz –