2011-03-30 8 views
1

クロムエクステンションを開発中で、エクステンションで使用するiframeがあります。これは私がiframeでやっていることですクロムエクステンションのxmlhttprequest

"イメージをドラッグしてiframeにドロップすると、コンテンツスクリプトの1つでドロップイベントが処理され、その関数が自分の拡張コードを呼び出すと、xmlhttprequestオブジェクトが作成されます。私のサーバーのPHPファイルに画像のURLを送ってください。

これは起こっていることです。私は "4"のreadyStateを取得しますが、私のブラウザからPOSTリクエストはありません。私はブラウザの "NETWORK"タブでチェックしましたが、ブラウザーから出るPOST要求はありません(マニフェストファイルの権限セクションに自分のサイトがリストされています)。

これは私のコードです - 。>

JScript.js(コンテンツスクリプトの1つ)

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

答えて

0

あなたは正しい、あなたのURLの前にhttp://がありますか?

xhr.readyState多くのことを教えてくれるわけではありません。 xhr.statusの内容を確認してください。エラーコードが含まれています。すべてが正常であれば200

+0

ありがとう!それはうまくいきましたが、今問題は私が要求を送ることができるということですが、データは送信できません。画像のURLを取得しようとするたびに、空の文字列として表示されます。私のPHPスクリプトは単純な$ _POST ["IMGURL"]配列を使ってイメージのURLを取得します。なぜ私はいつも空の文字列を取得しているすべてのアイデア?私はサーバーに送信する前にデータ(画像のURL)を持っていると確信しています。私は何か基本的なことを逃しています – Ajai

+0

@Ajaiクロムコンソールのネットワークタブを開き、そのリクエストで送信されたデータを確認します。すべてがOKならば、PHP側で 'print_r($ _ POST)'を実行し、受信したものを確認してください。 – serg

関連する問題