Тем не менее, мне трудно понять, JSON - PullRequest
1 голос
/ 15 декабря 2010

Эй, ребята, я прочитал Этот пост , поэтому я получил JSON - это самый простой способ перевести объект JavaScript в ассоциативный массив или объект PHP / C # (и наоборот).).

Теперь мой вопрос в том, что происходит в приведенном ниже коде, то есть без JSON / XML я все еще могу получить доступ к моему объекту C # в Javascript, может быть, я ошибаюсь, если такПожалуйста, исправьте меня:

C #

    Foreach(DataRow dr in dvItems.Table.Rows) //dvItems is a DataView
    {
        strItems &= "'" & dr("ItemTitle") & "',"  //strItems is a String
    }
    strItems = strItems.Trim(",")

Javascript: здесь я использую Autocomplete.js, используя JQuery

   function InitAutocomplete() 
   {
       data = [<%=strItems %>].sort();
       AutoComplete_Create('<%=txtItem.ClientId %>', data);
   }

Смотрите, я использую strItems в javascript с servertag, так где именно используется JSON?.net что-то делает внутри?я полностью сбит с толку, как JSON / XML используется для передачи данных?

Ответы [ 2 ]

2 голосов
/ 15 декабря 2010

Хотя вы можете передавать данные без использования JSON, это не не гарантирует , что все данные безопасны для передачи, например встроенные </script> теги. Использование JSON закодирует ваши данные таким образом, чтобы это предотвратить, и вы расшифруете их на стороне JavaScript, например, с помощью json2.js .

1 голос
/ 15 декабря 2010

Вы на самом деле не используете JSON здесь.Вы просто генерируете массив строк для javascript и используете его очень простым способом.

Если вы хотите преобразовать JSON в объект (ы) javascript, вам нужно изменить свою программу и вам нужен JSONсинтаксический анализатор.Существует несколько реализаций JSON-парсеров, но вы упомянули jQuery, чтобы вы могли использовать: http://api.jquery.com/jQuery.parseJSON/

Однако для синтаксического анализа с использованием jQuery требуется, чтобы ваш JSON был строго отформатирован (начиная с версии 1.4).См http://json.org/ о правильной форме.Обычно в вашей ситуации вы должны заключать двойные кавычки вокруг строк и помещать весь массив в квадратные скобки.

Ваши результаты должны быть примерно такими:

strItems = '['
Foreach(DataRow dr in dvItems.Table.Rows) //dvItems is a DataView
{
    // TODO: Escape dr("ItemTitle") so it conforms to http://json.org/ => String
    strItems &= "\"" & dr("ItemTitle") & "\","  //strItems is a String
}
strItems = strItems.Trim(",")
strItems &= ']'

<script type="text/javascript">
    var jsonArr = <%=strItems%>;
    var data = jQuery.parseJSON(jsonArr);
    AutoComplete_Create('<%=txtItem.ClientId %>', data);
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...