2012-06-23 66 views
2

所以,我對web開發相當陌生,而且我在某些方面遇到了一些麻煩。我希望能夠發送一個POST請求(或者真的,無論什麼方法允許我這樣做),從Firefox擴展/ Bookmarklet到我控制的PHP頁面。發送POST請求到特定的域?

我一直在閱讀跨源的資源共享,但我還沒有設法讓它工作,我可以使用一些指導。

這似乎是一個jQuery ajax請求可以使這成爲可能,但我還沒有能夠得到這個工作,也許因爲我是新來的。

我最近一直在讀這本書,我一直有麻煩把它融合在我腦海中,因爲它似乎有很多正確的答案。

編輯:

所以我已經得到了PHP頁面設置是這樣的:

header("Access-Control-Allow-Origin: *"); 
    header("Access-Control-Allow-Methods: POST"); 

addLink($_POST['username'], $_POST['password'], $_POST['URL']); 

而且該功能只是增加了URL以基於用戶名/密碼的數據庫。這不是問題。

而且我已經得到了這個來自同一個域的請求的工作:

$(document).ready(function() { 
    $("a").click(function() { 
     $.post("sendLinkInfo.php", { username: "<username here>", 
     password: "<password here>", URL: window.location.href }, 

    }); 
}); 

麻煩的是從任意書籤/ Firefox擴展做跨域。

+1

我們都是代碼嚮導,但我們的水晶球被打破。請問一些代碼示例? –

+0

當然。將給我迄今爲止。抱歉。 – Glem

回答

1

很簡單,看看jQuery的文檔:

var menuId = $("ul.nav").first().attr("id"); 
var request = $.ajax({ 
    url: "script.php", //Modify this part 
    type: "POST", 
    data: {id : menuId}, 
    dataType: "html" 
}); 

request.done(function(msg) { 
    $("#log").html(msg); 
}); 

request.fail(function(jqXHR, textStatus) { 
    alert("Request failed: " + textStatus); 
}); 

這應該工作跨域。

+0

看起來我終於設法讓它工作。做了我的一天嘿。問題實際上是我的一個輕微的語法失敗。但是,這種請求形式確實正確,因此您的答案是正確的。 非常感謝! – Glem

1

它是用jQuery

$.ajax({ 
    type: "POST", 
    url: "some.php", 
    data: { name: "John", location: "Boston" }, 
    success: function(msg) { 
     alert("Data Saved: " + msg); 
    } 
}); 
+0

問題是我需要這個從bookmarklet/Firefox擴展工作跨域。 – Glem

1

對於您可以使用像下面的跨域問題:

$("a").click(function() { 
    $.ajax({ 
     type: 'POST', 
     url: 'sendLinkInfo.php', 
     crossDomain: true, 
     data: { 
      username: "<username here>", 
      password: "<password here>", 
      URL: window.location.href 
     }, 
     dataType: 'html', 
     success: function(data) { 
      console.log(data); 
     }, 
     error: function() { 
      alert('POST failed.'); 
     } 
    }); 
});