Chrome 扩展中的 xmlhttprequest

发布于 2024-10-28 02:08:17 字数 1801 浏览 2 评论 0原文

我正在开发一个 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);
     });
    }

这是我在background.html中的OnRequest函数处理程序-->

 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");
};

I am developing a chrome extension and I have an iframe which I use in my extension. This is what I do with my iframe

"When I drag and drop a image to my iframe I handle the drop event in one of the content scripts and pass that function call my extension code. There I create a xmlhttprequest object and then send the URL of the image to a php file in my server."

This is what is happening. I get a readyState of "4" but there is no POST request going out of my browser. I checked with the "NETWORK" tab in the browser but there is no POST request going out of the browser (I have listed my site in the permissions section of the manifest file).

This is my code --.>

JScript.js(One of the content scripts )

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

This is my proxy in the same content script-->

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

This my OnRequest function handler in 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");
};

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

南城旧梦 2024-11-04 02:08:17

您的网址前面有 http:// ,对吗?

xhr.readyState 没有说明太多,它只是意味着它已经完成。检查一下xhr.status里面有什么,它会包含错误代码。如果一切正常,它应该是 200

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

You have http:// in front of your url, right?

xhr.readyState doesn't tell much, it just means that it is done. Check out what's inside xhr.status, it would contain error code. If everything is ok it should be 200:

xhr.onreadystatechange = function(){
    if (xhr.readyState == 4) {
        alert(xhr.status);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文