Nie jestem pewien, jak to słowo, więc będę tylko bezpośrednim.

Używam jQuery z AJAX, aby zaktualizować pole wyboru, gdy inna wybrana skrzynka zmienia się. Wszystko pracuje zgodnie z wyjątkiem, gdy powraca JSON, spędzić metodę pożary, a nie metodę.

Po przejrzeniu wszystkiego, ustalałem, że powracający JSON jest nieprawidłowy.

JSON jest

{
    "COLUMNS": ["DESCRIPTION", "COMPUTED_COLUMN_2"],
    "DATA": [
        ["Test; Job PD", 11],
        ["Test 2", 10],
        ["Test 3", 00],
        ["Test 4", 20]
    ]
}

Wartość testu 3 wynosi 00. Należy to faktycznie być ciąg "00". Jednak parser, który jest serializjson w Coldfusion, wydaje się zwrócić 00 jako numer. Powoduje to, że konwersja JSON nie powiodła się i wystrzewa metodę Fail. Dotyczy to tylko na IOS i Mac.

Moje pytanie staje się, jak egzekwować wartość w JSON, aby była wartością łańcuchową, a nie wartością numeryczną?

Moje środowisko jest:

OSX Mavericks Chrome Coldfusion 10 CFWheels 1.1.8

1
Jeremy Keczan 10 grudzień 2013, 18:40

2 odpowiedzi

Najlepsza odpowiedź

Skończyło się za pomocą JS REGEX Wymień w filtrze danych, aby zastąpić specjalny przypadek.

response.replace(/(00)/, '"00"');

Cytaty są ważne, ponieważ po prostu zastąpisz "00", ponownej serializuje go z powrotem do numeru.

AKTUALIZACJA:

Ten problem jest rozwiązany z Adobe w aktualizacji Coldfusion 11. Duże dzięki @ Miguel-F do tego wskazywania.

0
Jeremy Keczan 10 grudzień 2013, 18:28

Technicznie, 00 jako numer w JSON nie jest ważny - sprawdź pod "numer" tutaj: http://www.json.org /. Jako MEAGAR pisze w swoim komentarzu powyżej, musisz go zakodować jako łańcuch.

Możesz także kodować jako 0 (ponieważ jest to wartość całkowitą) i podjąć ten specjalny przypadek podczas analizowania danych.

0
Jervelund 10 grudzień 2013, 14:46