2016-03-18 4 views
-3

С локальным JSON файла я получаю данные по $.getJSON и выход с JQuery мобильного

$('body').off('tap').on('tap', 'ul li', function(event) { 
    var jqxhr = $.getJSON("one.json", function(data) { 
     console.log("success"); 
     alert(data.name + " " + data.one); 
     $("#json").html(data.name + " " + data.one); 
    }).done(function() { 
     console.log("second success"); 
     $("#d1").html("second success"); 
    }).fail(function(jqxhr, textStatus, error) { 
     var err = textStatus + ', ' + error; 
     console.log("Request Failed: " + err); 
     $("#d2").html("Request Failed: " + err); 
    }).always(function() { 
     console.log("complete"); 
     $("#d3").html("complete"); 
    }); 
}); 

Это хорошо работает на компьютере и HTC, но на устройствах Samsung это не работает. На samsung не ошибка, выход пустой div

+0

Если проверить параметры, передаваемые в 'сбой()' обработчика вы получите гораздо больше информации. На данный момент, учитывая отсутствие деталей в вашем вопросе, все, что мы можем сделать, это рассказать вам, как отлаживать проблему, а не как ее решить. –

+0

На samsung не 'error', вывод пустого' div' – ZKolya

+0

с учетом вашего кода, казалось бы, невозможно получить пустой результат div, если запрос ajax еще не запущен. –

ответ

1

Чтение комментариев выше, я считаю, что его код может действительно работать с удачей на одном устройстве и терпеть неудачу на многих других.

«Используется», который вы используете, выглядит недействительным (и его использование действительно содержит предупреждение и, следовательно, имеет ограничения). http://api.jquerymobile.com/tap/

Предупреждение: Используйте кран с осторожностью

Tap использует vclick и поэтому его следует использовать с осторожностью на сенсорных устройств. Дополнительную информацию см. В разделе vclick API documentation.

Основываясь на моем понимании, после крана должна появиться функция - не ссылка на какие-либо конкретные метки. Обратите внимание на разницу между первой строкой в ​​коде выше и моим кодом ниже.

$('body').off('tap').on('tap', function(event) { 

    var jqxhr = $.getJSON("one.json", function(data) { 
     console.log("success"); 
     alert(data.name + " " + data.one); 
     $("#json").html(data.name + " " + data.one); 
    }).done(function() { 
     console.log("second success"); 
     $("#d1").html("second success"); 
    }).fail(function(jqxhr, textStatus, error) { 
     var err = textStatus + ', ' + error; 
     console.log("Request Failed: " + err); 
     $("#d2").html("Request Failed: " + err); 
    }).always(function() { 
     console.log("complete"); 
     $("#d3").html("complete"); 
    }); 
}); 
+0

Обработчик не работает 'ul li'? – ZKolya

+0

Я вижу проблему, похожую на мою http://stackoverflow.com/questions/14191338/ajax-working-on-some-android-devices-not-in-other, но probem в API – ZKolya

+0

Определить обработчик? Вы имеете в виду селектор? Вы связали это событие с телом. Если вы хотите привязать его к * ul li *, тогда что-то вроде * $ («ul> li»). On («tap», function .....); * Вам нужно прочитать, как использовать краны перед вами используйте его, иначе вы будете зависеть от кода, не зная ограничений до тех пор, пока вы или один из ваших пользователей не поедете. –

0
if (currentapiVersion >= android.os.Build.VERSION_CODES.JELLY_BEAN){ 
webView.getSettings().setAllowUniversalAccessFromFileURLs(true); 
} 
Смежные вопросы