2012-04-04 2 views
3

Я пытаюсь форматировать ответ JSON, как например:JSON ответ с

[ 
{ 
    "id": "23029", 
    "label": "F:\path\to\file\filename.txt", 
    "value": "filename.txt" 
}, 
{ 
    "id": "23030", 
    "label": "F:\path\to\file\filename.txt", 
    "value": "filename.txt" 
}, 
{ 
    "id": "23031", 
    "label": "F:\path\to\file\filename.txt", 
    "value": "filename.txt" 
} 

]

но согласно JSONLint, то \ ломает "структуру"? Если я заменил \ на | он работает, поэтому я знаю, что проблема \. Я использую ответ в jQuery's Autocomplete.

Должен ли я использовать SerializeJSON() вместо этого? Если да, мне нужно что-то изменить в сценарии автозаполнения ajax?

$(function() { 
    var cache = {}, 
     lastXhr; 
    $("#media").autocomplete({ 
     minLength: 2, 
     source: function(request, response) { 
      var term = request.term; 
      if (term in cache) { 
       response(cache[ term ]); 
       return; 
      } 

      lastXhr = $.getJSON("ajax/search.cfm", request, function(data, status, xhr) { 
       cache[ term ] = data; 
       if (xhr === lastXhr) { 
        response(data); 
       } 
      }); 
     } 
    }); 
}); 
+2

Да, используйте 'SerializeJSON()'! – Henry

ответ

8

\ является маскирующим и нужно экранировать себя, если она является частью содержания.

Итак, JSON строка должна нравится это до того, как клиент получает его:

[ 
    { 
     "id": "23029", 
     "label": "F:\\path\\to\\file\\filename.txt", 
     "value": "filename.txt" 
    }, 
    { 
     "id": "23030", 
     "label": "F:\\path\\to\\file\\filename.txt", 
     "value": "filename.txt" 
    }, 
    { 
     "id": "23031", 
     "label": "F:\\path\\to\\file\\filename.txt", 
     "value": "filename.txt" 
    } 
] 
+0

Этот ответ также верен. – HPWD

+0

Это было также первое :) – xandercoded

8

вы пытались избежать обратной косой черты?

{ 
"id": "23030", 
"label": "F:\\path\\to\\file\\filename.ext", 
"value": "filename.txt" 
} 
+1

Я думал, что все в порядке в цитатах. Я постараюсь избежать этого. – HPWD

+1

Да, это сработало. Благодарю. – HPWD

4

В то время как другие респонденты указали, что вы должны избежать обратный слэш, если вы были использовать serializeJSON() она будет заботиться о том, что побег для вас.

+0

Благодарим вас за разъяснение, что сделает seriallizeJSON(), чтобы помочь в этом случае. – HPWD