Mam sytuację, w której chciałbym odczytać niektóre dane z formatu JSON przez PHP, jednak mam pewne problemy ze zrozumieniem, jak powinienem skonstruować obiekt Javascript, aby dynamicznie utworzyć format JSON.
Mój scenariusz jest następujący:
<input title="QA" type="text" class="email">
<input title="PROD" type="text" class="email">
<input title="DEV" type="text" class="email">
Kod Javascript, który mam do tej pory, przechodzi przez każde wejście przechwytuje dane, jednak nie jestem w stanie zrozumieć, jak dalej przetwarzać.
var taskArray = {};
$("input[class=email]").each(function() {
var id = $(this).attr("title");
var email = $(this).val();
//how to create JSON?
});
Chciałbym uzyskać następujące wyniki, jeśli to możliwe.
[{title: QA, email: '[email protected]'}, {title: PROD, email: '[email protected]'},{title: DEV, email: '[email protected]'}]
Gdzie e-mail jest pozyskiwany przez wartość pola wejściowego.
źródło
Nie sądzę, aby można było zamienić obiekty JavaScript w ciągi JSON przy użyciu tylko jQuery, zakładając, że potrzebujesz ciągu JSON jako danych wyjściowych.
W zależności od przeglądarek, na które kierujesz reklamy, możesz użyć rozszerzenia
JSON.stringify
funkcji do tworzenia ciągów JSON.Zobacz http://www.json.org/js.html uzyskać więcej informacji, nie można również znaleźć parser JSON dla starszych przeglądarek, które nie obsługują obiekt JSON natywnie.
W Twoim przypadku:
var array = []; $("input[class=email]").each(function() { array.push({ title: $(this).attr("title"), email: $(this).val() }); }); // then to get the JSON string var jsonString = JSON.stringify(array);
źródło
Może to pomoże, wolałbym czysty JS wszędzie tam, gdzie to możliwe, drastycznie poprawia wydajność, ponieważ nie będziesz mieć wielu wywołań funkcji JQuery.
var obj = []; var elems = $("input[class=email]"); for (i = 0; i < elems.length; i += 1) { var id = this.getAttribute('title'); var email = this.value; tmp = { 'title': id, 'email': email }; obj.push(tmp); }
źródło
to samo z powyższego przykładu - jeśli szukasz po prostu json (nie tablicy obiektów), po prostu użyj
function getJsonDetails() { item = {} item ["token1"] = token1val; item ["token2"] = token1val; return item; } console.log(JSON.stringify(getJsonDetails()))
to wyjście zostanie wydrukowane jako (prawidłowy plik json)
{ "token1":"samplevalue1", "token2":"samplevalue2" }
źródło