ошибка в вызове jsonp ТОЛЬКО ИЗ расширения firefox - PullRequest
3 голосов
/ 02 ноября 2011

Что странно в моей ошибке, так это то, что она возникает ТОЛЬКО в расширении Firefox, с которым я связан в нижней части этого поста.Я не могу воспроизвести эту ошибку в любом другом параметре.

У меня есть этот запрос ajax

$.ajax({
  type: "GET",
  dataType: "jsonp",
  url: url,
  jsonpCallback: "JSONCallback",
  data: {title:$("#txtTitle").val(), url:taburl},
  success: function(data, textStatus) {
    if(data.code > 0)
        {
        $("#icon").removeClass().addClass('accept');
        }
    else
        {
        $("#icon").removeClass().addClass('error');
        if(data.code == '-1')
            alert('kunne ikke finde din ønskeseddel på e-ønsker.dk - besøg e-ønsker.dk, og prøv derefter igen');
        }
  },
  error: function(xhr, textStatus, errorThrown) {
     alert("XMLHttpRequest="+xhr.responseText+"\ntextStatus="+textStatus+"\nerrorThrown="+errorThrown);
    $("#icon").removeClass().addClass('error');
  }
});

, сервер возвращает

JSONCallback({"code":405});

заголовки application/json

так почему я получаю parseError о том, что JSONCallback не был вызван?Я думал, что jQuery должен был справиться с этим для меня?

код от http://builder.addons.mozilla.org/addon/1022928/latest и рассматриваемый файл data/panel.js

Ответы [ 3 ]

2 голосов
/ 16 ноября 2011

Проблема с window.Самый простой способ исправить это - отредактировать код jQuery (я знаю, я тоже ненавижу это делать), чтобы использовать unsafeWindow вместо window.

1 голос
/ 11 ноября 2011

вы пытались включить «Распределение ресурсов между источниками»

с использованием: jQuery.support.cors = true;

У меня была такая же проблема с Firefox некоторое время назад, и я использовал эту строку, прежде чем мой вызов ajax исправил ее для меня.

я могу заставить тебя работать по некоторым причинам :) удачи

0 голосов
/ 11 ноября 2011

Это не совсем ответ, но почему вы используете jsonp? Код, выполняемый в контексте расширения Firefox, не подлежит перекрестному ограничению происхождения.

Насколько я понимаю, jsonp заключается в том, что в документ добавляется тег сценария с использованием ответа сервера, поэтому ваш обратный вызов выполняется. В расширении Firefox «документ» - это пользовательский интерфейс XUL, а не документ обычной страницы. Я не уверен, что добавление элемента сценария в XUL приведет к тому, что браузер выполнит этот сценарий.

Надеюсь, это поможет!

...