Pytanie jQuery publikuje JSON


aktualizacja: Chciałbym przekazać var value na serwer

cześć, ten sam stary, ten sam stary ... :)

Mam formularz o nazwie <form id="testForm" action="javascript:test()"> i obszar kodu nazywany <code id="testArea"></code>

Używam tego kodu do stringify i wyświetlania danych w obszarze kodu:

var formData = form2object('testForm');
document.getElementById('testArea').innerHTML = JSON.stringify(formData, null, '\t');
var value = JSON.stringify(formData, null, '\t');

Chcę tylko wysłać te dane do pliku JSON. Pracowałem nad tym projektem: http://ridegrab.com/profile_old/ i jeśli naciśniesz Submit Query pojawi się nagłówek strony.

Również chcę użyć tego fragmentu skryptu do wysyłania danych:

    function authenticate(userName, password) {
    $.ajax
    ({
        type: "POST",
        //the url where you want to sent the userName and password to
        url: 'username:password@link to the server/update',
        dataType: 'json',
        async: false,
        //json object to sent to the authentication url
        data: '{"userName": "' + userName + '", "password" : "' + password + '"}',
        success: function () {

        alert("Thanks!"); 
        }
    })
}

Ponownie, wszystko, czego chcę, to móc wysłać te dane JSON na serwer. Mój serwer jest skonfigurowany do update or POST dane we właściwym miejscu.


151
2018-04-06 17:49


pochodzenie


więc co jest prblem? - corroded
nie mogę sprawić, żeby to działało :) nie wiem jak połączyć je, aby wysłać te dane na serwer ... nawet jeśli je zastąpię data z data: value,... !!? - Patrioticcow
Po pierwsze, czy jesteś pewien, że to nie jest problem z połączeniem? Jeśli przypiszesz error funkcja, czy jest wywoływana? Jeśli tak, z jakim błędem? - Wiseguy
jak mogę to zrobić? - Patrioticcow
Choć ma ponad rok, odpowiem na ostatnie pytanie Patrioticconu na temat tego, jak to zrobić. Widzisz opcję "sukcesu", którą wysłałeś do metody ajax? Zrób to samo z "błędem". Podobnie jak w "error: MyErrorHandlingFunction" lub "error: function (error) {[Tutaj kod obsługi błędu]}" - vbullinger


Odpowiedzi:


"dane" powinny być obiektami JavaScript o określonej długości:

data: JSON.stringify({ "userName": userName, "password" : password })

Aby wysłać swoje formData, przekaż to stringify:

data: JSON.stringify(formData)

Niektóre serwery wymagają również application/json Typ zawartości:

contentType: 'application/json'

Poniżej znajduje się bardziej szczegółowa odpowiedź na podobne pytanie: Jquery Ajax Publikowanie json do serwisu WWW


171
2018-04-06 18:19



Jak mogę uzyskać JSON w php? Jakiej nazwy mam użyć? $ json = $ _POST [??]
@tasos Myślę, że to jest to, o co prosisz: stackoverflow.com/questions/5806971/... - Kyle Wild
Odzwierciedlając tutaj niepoprawność; to będzie działać poprawnie w prostych scenariuszach, ale wiadomość zakodowana w url może być bardzo problematyczna, szczególnie w przypadku tablic z materiałami. - FMM
@FMM i Jonas N - Czy możecie mi pomóc w ustaleniu, jak zaktualizować moją odpowiedź na poprawność? Przykłady w dokumentach jQuery (tutaj: api.jquery.com/jQuery.post) spraw, aby wyglądało to tak, jakbyś mógł opublikować obiekt JS lub ciąg znaków, co doprowadziło mnie do przekonania, że ​​jQuery obsłuży wszystkie niezbędne serializacje ciągów. - Kyle Wild
Zastanów się, co się dzieje, gdy Twoje dane zawierają na przykład listę rzeczy: { foo: [1,2,3], bar: 'baz' }. Zostanie to zakodowane w postaci jako foo%5B%5D=1&foo%5B%5D=2&foo%5B%5D=3&bar=baz (bez ruchu, to jest foo[]=1&foo[]=2&foo[]=3&bar=baz). Prawdopodobnie nie to, co chcesz po stronie serwera. - FMM


Publikujesz JSON w ten sposób

$.ajax(url, {
    data : JSON.stringify(myJSObject),
    contentType : 'application/json',
    type : 'POST',
    ...

jeśli przekazałeś obiekt jako settings.data jQuery przekonwertuje go na parametry zapytania i domyślnie wyśle ​​z typem danych application / x-www-form-urlencoded; charset = UTF-8, prawdopodobnie nie to, co chcesz


224
2017-11-02 23:41



Więc NIE ustawiasz wartości processData: false right? - Tim Lovell-Smith
@ TimLovell-Smith nie zrobi różnicy, ponieważ jQuery nie przetworzy data ciąg w każdym przypadku - Phil


Jeśli wysyłasz prośbę o dodanie do domeny, powinieneś sprawdzić ten link.

https://stackoverflow.com/a/1320708/969984

Twój serwer nie akceptuje żądania wpisu między witrynami. Tak więc konfiguracja serwera musi zostać zmieniona, aby umożliwić wysyłanie żądań między lokacjami.


1
2018-01-26 01:41