2012-04-18 14 views
0

XMLHTTPRequestを使用してログインリクエストを完了するための外部スクリプトを取得しようとしています。HTMLページでXMLHTTPRequestが完了しない

XMLHttpRequestがhttp:// / .phpを読み込めないというエラーが表示されます。 Origin http:// *は、Access-Control-Allow-Originによって許可されていません。 XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin

をそして私が理解から、私はJSONPオブジェクトとしてそれを要求する必要があります。

は今、私はこの記事ではかなり馴染み成長してきました。問題は、私はXMLHTTPRequestを使用しており、それを行うためにjQueryライブラリを使用できないということです。

ここで私は、スクリプトを実行しようとしているHTMLページから私のコードです:

<html> 
<head> 
<meta http-equiv="Access-Control-Allow-Origin" content="*"> 
<script language = "javascript" type="text/javascript" src="jquery-1.7.2.js"> 
</script> 
<script language = "javascript" type="text/javascript" src="main.js"> 
</script> 
<script type="text/javascript"> 
function show_prompt() 
    { 
    var name=prompt("User Name"); 
    var password =prompt("Password"); 
    var loginWorked = false; 
    if (name!=null && name!="") loginWorked = init(name,password); 
if(loginWorked == true){ 
    window.location = "Toolbar.html" 
} 
} 
</script> 
</head> 
<body> 
<input type="button" onclick="show_prompt()" value="Login" /> 
</body> 
</html> 

そして、私のメインのファイルからコード:

init関数:

function init(username,password){ 
    //Initializes the toolbar. 

init.user = username; 
init.pass = password; 
init.pass_hashed = sha256(init.pass); 
var key = fetchKey(username); 
init.pass_hashed += key; 
init.pass_hashed = sha256(init.pass_hashed); 
var loginParams = "login=1&pwd=" + init.pass_hashed + "&uname=" + init.user + "&LastKey=" + getKey(); 
loginReqReturn = send_request("http://data.nova-initia.com/login2.php","POST", loginParams); 
if(loginReqReturn.responseText != "Error: Login Incorrect "){ 
    return true; 
} 
else return false; 
は、

}

sendRequestメソッド:

function send_request(theURL, theMethod, theParams) 
{ 
var theReq = new XMLHttpRequest(); 
theReq.overrideMimeType("application/json"); 
theReq.open(theMethod,theURL,false); 
if(typeof(theParams) === "string") 
{ 
    theReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
} 
else 
{ 
    theReq.setRequestHeader("Content-type", "application/json"); 
    theParams = JSON.stringify(theParams); 
} 
if(_key) theReq.setRequestHeader("X-NOVA-INITIA-LASTKEY", _key); 
if(theParams) 
{ 
    theReq.send(theParams); 
} 
setKey(theReq); 
return theReq; 

}

は、最も効率的なコードが、それは、少なくとも私はGoogle Chromeのツールバーに取り組んでいる非HTMLコンテキスト(でそれを実行し、それにhtmlのオーバーレイを必要なときに動作します作業)。どんな助けでも大歓迎です。

+0

と思いますか? – epascarello

答えて

0

、あなたは拡張機能のマニフェスト内cross-origin XMLHttpRequest requestsの権限を要求することができます:あなたが唯一のjQueryを使ってリクエストのそれらの種類を行うことができます

{ 
    ... 
    "permissions": [ 
    "http://data.nova-initia.com/" 
    ], 
    ... 
} 
関連する問題