2011-12-05 2 views
1

У меня есть следующий html, alert работает только в mozilla firefox, когда я нажимаю кнопку. Почему?jquery запрос ajax работает только в firefox

<html> 
     <head> 
     <script type="text/javascript" src="jquery.js"></script> 
     <script type="text/javascript"> 
     $(document).ready(function(){ 
     $("button").click(function(){ 
      $.ajax({url:"https://graph.facebook.com/1524623057/", 
      success:function(){ 
      alert(1); 
      }}); 
     });}); 
     </script> 
     </head> 
     <body> 

     <button>send request</button> 
     </body> 
     </html> 
+0

Возможный дубликат [jQuery ajax не работает в приложениях facebook] (http://stackoverflow.com/questions/1186855/jquerys-ajax-not-working-in-facebook-apps) – Jasper

ответ

2

Результат от Facebook не является правильным JSON, так как она имеет разрывы строк и вкладок - тоже, он служил как текст/JavaScript.

Facebook поддерживает JSONP, однако, так что вы могли бы сделать это вместо:

$.ajax({ 
    url: 'https://graph.facebook.com/1524623057/', 
    type: 'get', 
    dataType: 'jsonp' 
}).done(function(data){ 
    // the data! 
}); 

это будет в основном лавировать на обратного вызова = jQuery23423234234 или любой другой случайный идентификатор генерируется в Facebook, возвращающая функцию, которую можно назвать ,

Если вы хотите, чтобы разобрать его самостоятельно, сделайте следующее:

Скажите $.ajax использовать тип «текст», например,

а затем очистить его. Вот ответ на SO об очистке такого типа js, поэтому вы можете использовать $.parseJSON вместо того, чтобы бросать его в новую функцию или оценивать ее. Converting multiline, indented json to single line using javascript

Таким образом, вы можете var data = $.parseJSON(cleanedUpJsonFromFacebook) и получить доступ к свойствам объекта.

2

Похоже, что этот запрос возвращает тип данных JSON. Код жалуется на двоеточие, когда получает результат и не распознает JSON.

Попробуйте это:

$.ajax("https://graph.facebook.com/1524623057/", 
    { 
     success:function(){ 
      alert(1); 
     }, 
     dataType: 'json' 
    } 
); 

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

Заканчивать http://api.jquery.com/jQuery.ajax/

+1

данные, возвращенные из fb isn ' t valid json, как в своем типе (text/javascript), так и в формате (действительный json не содержит новых строк или знаков табуляции между ключами и значениями) –

+1

Полезно знать. Еще одна причина не любить FB ... –

+0

Я думаю, что их скрипт выполняет 'var result = (new Function ('return' + data)());' –

Смежные вопросы