teledexterus Ответов: 2

В формате JSON.разбирать не функционирует


Как я могу получить JSON-файла.синтаксического анализа, чтобы быть оценены в и AJAX функции, потому что TextBox5-9 пустые.

Это должно сработать.

У меня выбор данных для различия экземпляры от функции атрибутом webmethod функции getdate.
$("#<%= TextBox4.ClientID %>").val(result.d);
распечатывает любой из двух приведенных ниже JSON-данных и работает.
"[{id:1, datetime:04/10/2017, col1:1, col2:2, col3:2}]"

и
"{\"id\":1,\"datetime\":04/10/2017,\"col1\":1,\"col2\":2,\"col3\":2}]"

TextBox5-9 не дают никаких данных, как они должны. Структура класса JSON не читается.

Это должно сработать.
<script type="text/javascript" src="../Scripts/jquery-1.4.1.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#<%= Button1.ClientID %>").click(function () {
                var mo1 = $("#<%= TextBox1.ClientID %>").val();
                var dy1 = $("#<%= TextBox2.ClientID %>").val();
                var yr1 = $("#<%= TextBox3.ClientID %>").val();
                var data = { mo:mo1, dy:dy1, yr:yr1 };
                var json1 = JSON.stringify(data);
                
                $.ajax
                ({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    data: json1,
                    url: "Default.aspx/GetDate",
                    success: function (result) {
                        $("#<%= TextBox4.ClientID %>").val(result.d);
                        var datereturn = JSON.parse(result.d);
                        $("#<%= TextBox5.ClientID %>").val(datereturn.id);
                        $("#<%= TextBox6.ClientID %>").val(datereturn.datetime);
                        $("#<%= TextBox7.ClientID %>").val(datereturn.col1);
                        $("#<%= TextBox8.ClientID %>").val(datereturn.col2);
                        $("#<%= TextBox9.ClientID %>").val(datereturn.col3);

                    },
                    error: function (status, ex) {
                        alert("Error Code: Status: " + status + " Ex: " + ex);
                    }
                });
                return false;
            });
        });
    </script>


Что я уже пробовал:

Я пробовал много возвращающихся форматах JSON и возвращается из функции getdate атрибутом webmethod. Как я уже сказал, это создает один из двух JSONs в TextBox4 в правильной форме. Он просто не распечатывает классы Json. Я пробовал "вернуться" вместо "возвратить.д".

teledexterus

Форматы данных Json должны быть изменены в WebMethod GetDate, чтобы получить любую форму.

Bryian Tan

Datetime-это строка в контексте JSON, которая должна быть заключена в кавычку \ " 04/10/2017\"

2 Ответов

Рейтинг:
2

Karthik_Mahalingam

так и должно быть

string json = "[{id:1,datetime:\"04/10/2017\",col1:1,col2:2,col3:2}]";


Поскольку json находится в формате массива, доступ к первому элементу осуществляется с помощью индекса массива
var datereturn = JSON.parse(result.d)[0];


Рейтинг:
11

Bryian Tan

Вот вам пример. Я предполагаю, что строка JSON такова, как вы описали в посте. Добавьте цитату вокруг значения datetime.
"[{\"ИД\":1,\"типа datetime\":04/10/2017,\"столбца col1\":1,\"поле col2\":2,\"кол3\":2}]"

чтение массива json-JSFiddle[^]

Вот выходные данные из примера кода:

ID: 1
datetime: 04/10/2017
col3: 2

ID: 2
datetime: 05/10/2017
col3: 33

Результат будет пустым, если вы удалите цитату из значения datetime.