xmlhttprequest в расширении Chrome - PullRequest
1 голос
/ 30 марта 2011

Я разрабатываю расширение для Chrome, и у меня есть iframe, который я использую в своем расширении. Это то, что я делаю с моим iframe

"Когда я перетаскиваю изображение в свой iframe, я обрабатываю событие перетаскивания в одном из скриптов содержимого и передаю эту функцию, вызывая мой код расширения. Там я создаю объект xmlhttprequest и затем отправляю URL-адрес изображения в php файл на моем сервере. "

Это то, что происходит. Я получаю readyState со значением «4», но из моего браузера не поступает POST-запрос. Я проверил на вкладке «СЕТЬ» в браузере, но из браузера не поступил запрос POST (я указал свой сайт в разделе разрешений файла манифеста).

Это мой код -.>

JScript.js (один из скриптов содержимого)

drop: function(event, ui) {
    var imgurl=$(ui.draggable).attr('src');
    imgurl="IMGURL="+imgurl;
    _post("www.somedomain.come/testing.php",imgurl,function(result){ alert("success")});
    }       

Это мой прокси в том же скрипте контента ->

  _post = function(url, data, callback) 
    {
      console.log("sending post");
      chrome.extension.sendRequest({
      msgType:'post', 
      data: data, 
      url:url
      }, function(response){
        alert(response);
     });
    }

Это мой обработчик функции OnRequest в background.html ->

 chrome.extension.onRequest.addListener(function(request, sender, sendResponse){
  if (request.msgType === 'post') {
        alert("Now in OnRequest function");
        // console.log("Now in Onrequest Function");
        alert("Url: "+request.url + "\n Data : "+ request.data);
        ajaxcallingfunction(request);
        alert("completed the ajax call");
        sendResponse("success");
      }

    });

var ajaxcallingfunction = function(request){
     var xhr = new XMLHttpRequest();
   xhr.open("POST",request.url, false);
    xhr.onreadystatechange = function(){
    alert(xhr.readyState);
    if (xhr.readyState == 4) {
            alert(xhr.readyState);
        }
    }       
    xhr.send(request.data);
   alert("after xhr call");
};

1 Ответ

0 голосов
/ 30 марта 2011

У вас есть http:// перед вашим URL, верно?

xhr.readyState мало что говорит, это просто означает, что это сделано.Посмотрите, что внутри xhr.status, оно будет содержать код ошибки.Если все в порядке, это должно быть 200:

xhr.onreadystatechange = function(){
    if (xhr.readyState == 4) {
        alert(xhr.status);
    }
}
...