我正在使用JQuery Ajax。我需要响应的PHP文件位于服务器上。第一个JavaScript文件位于服务器上的同一个目录中,第二个文件与我保存在本地,我在我的Chrome扩展中使用。我在PHP中创建了一段代码,我通过Ajax从本地JavaScript文件运行并获得响应,我想要的是调用服务器上的JavaScript,并且可以通过两种方法解决。让Ajax调用从两个JavaScript文件获取响应到一个PHP文件
1)将Ajax调用到保存在服务器上相同目录中的同一PHP代码块。
2)从本地JavaScript文件调用服务器上的JavaScript。当本地JavaScript获得响应时,使用一种方法从本地调用服务器上的JavaScript。
基本上我尝试了他们两个,我已经做了第二个Ajax调用到相同的代码块,但作为服务器html文件首先运行并首先加载JavaScript,然后它不会从该Ajax请求返回任何东西。 在第二种方法中,我使用了chrome的postMessage API。但它会阻止从本地到服务器传递的跨源信息。并且域名冲突停止传递我的消息来调用服务器JavaScript。
本地文件的JavaScript请求数据,并得到响应
function sendUrl(url){
console.log("Passed to sendURL : " + url); \t
$.ajax({
method:"GET",
\t url:"http://www.bitbaysolutions.com/connections.php?updateRow=true",
\t data:{
\t \t ajaxified : url
\t },
\t success:function(res){
console.log("PHP RESPONSE " + res);
\t }
});
}
我想调用服务器的JavaScript时,我从中得到Ajax调用的响应。简单的成功。
当我使用POST消息API在同一个Ajax调用响应
function sendUrl(url){
console.log("Passed to sendURL : " + url); \t
$.ajax({
method:"GET",
\t url:"http://www.bitbaysolutions.com/connections.php?updateRow=true",
\t data:{
\t \t ajaxified : url
\t },
\t success:function(res){
console.log("PHP RESPONSE " + res);
window.postMessage(res,"*");
\t }
});
}
并在服务器上编写代码JavaScript文件接收消息
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
eventer(messageEvent,function(e) {
console.log(e.data);
});
运行它后,我收到以下错误:
GET chrome-extension://jifdgpnmlcmlcbpmemiecblbddpdejhe/Row%20Updated net::ERR_FILE_NOT_FOUND
只要我想调用服务器的JavaScript文件,当我得到这个本地文件的响应。如果还有其他可能的解决方案,我将不胜感激。
我不能添加这样的: > chrome.runtime.onMessage.addListener( 函数(请求,发件人,sendResponse) { 如果(request.thisCameFromTheServer){ 的console.log(request.thisCameFromTheServer); } } ); 因为我想调用的JavaScript是在服务器上,而不是本地。 – Nadeem
有人告诉我,我可以调用javascript函数是从通过Ajax本地JavaScript的服务器,但不知道该怎么做 – Nadeem
是JavaScript的实际上是服务器上运行的服务器,在节点或什么的,或者是被服务器作为网页的一部分提供服务(所以它实际上由浏览器运行)? –