странное поведение с объектом json, полученным при вызове ajax в safari / webkit - PullRequest
1 голос
/ 16 ноября 2009

Я использую jquery для вызова AJAX POST веб-службы и получаю обратно объект JSON, который возвращает мне некоторый HTML-код, который я хочу добавить в div, он отлично работает в Firefox, но проблема в том, что сафари не добавляет, вот пример:

$.ajax({
    type: "POST",
    url: "ConnMgr.asmx/Request",
    data: JSON.stringify(objectToSend),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(response){
        $('#myDiv').empty();
        $("#myDiv").append(response.d.htmlSnippet); //this doesn't work on safari but it does on FF
        //$("#myDiv").append("<img src=\"image.png"/>")//this works in all browsers
        //alert(response.d);//this works in all browsers
    }
});

Похоже, что в сафари jquery не нравится идея использования объекта json в качестве аргумента для append () Я пытался создать копию переменной раньше, вставляя задержку, преобразовывая переменную в строку перед передачей, но результаты те же.

Большое спасибо

Ответы [ 5 ]

0 голосов
/ 16 января 2010

Существует разница в реализации JSON между FF и другими, которую я однажды заметил - другие не позволяют передавать странные символы. Вы должны использовать объекты. Попробуй посмотреть наверняка, что вернется - сбрось весь объект ответа на консоль, похожую на firebug, и посмотри содержимое. предупреждений может быть недостаточно.

0 голосов
/ 08 января 2010

Не быть придирчивым, но разве этот блок не такой же, как

success: function(response) {
    $('#myDiv').empty();


    //this doesn't work on safari but it does on FF
    //$("#myDiv").append("<img src=\"image.png"/>")//this works in all browsers
    //alert(response.d);//this works in all browsers
    $("#myDiv").append(response.d.htmlSnippet);
}

как этот блок, потому что вы можете связывать вызовы методов в jQuery?

success: function(response) {
    $('#myDiv').html(response.d.htmlSnippet);
}



  1. Можете ли вы попробовать сделать что-то подобное?

    $('#myDiv').html( '' + response.d.htmlSnippet );
    

    Не знаю, сработает ли это или нет ... но стоит попробовать.

  2. Я думаю, ваш код response.d.htmlSnippet. ToString () может не работать.
    Это должна быть строчная "toString ()" .
0 голосов
/ 16 ноября 2009

Вы имеете в виду что-то вроде этого http://jsbin.com/elapa/ у вас не работает в сафари?

0 голосов
/ 17 ноября 2009

да, я попытался использовать response.d.htmlSnippet.ToString (), и это не помогло

, наконец, я сделал обходной путь, составив htmlsnippet и затем взяв только одно число из предстоящего объекта JSON,и таким образом это работало, консоль отладки safari не сообщала об ошибке

0 голосов
/ 16 ноября 2009

вы пробовали response.d.htmlSnippet.ToString ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...