在不离开当前页面的情况下从Javascript调用PHP脚本
在不离开当前HTML页面的情况下(如果可能的话),从Javascript调用PHP脚本时遇到一些问题。我知道使用AJAX是可能的,尽管单独使用Javascript是可能的吗 背景:- 我希望我的页面使用Javascript(使用在不离开当前页面的情况下从Javascript调用PHP脚本,javascript,php,html,onclick,dom-events,Javascript,Php,Html,Onclick,Dom Events,在不离开当前HTML页面的情况下(如果可能的话),从Javascript调用PHP脚本时遇到一些问题。我知道使用AJAX是可能的,尽管单独使用Javascript是可能的吗 背景:- 我希望我的页面使用Javascript(使用onclick)执行一个简短的动画,然后立即调用一个PHP脚本将数据插入MySQL数据库-所有这些都不离开页面,这样它就不会抑制动画 我可以做的动画部分,以及将数据插入数据库等。但是如何在Javascript动画函数的末尾调用PHP脚本呢 任何指针、代码片段等都将不胜感激
onclick
)执行一个简短的动画,然后立即调用一个PHP脚本将数据插入MySQL数据库-所有这些都不离开页面,这样它就不会抑制动画
我可以做的动画部分,以及将数据插入数据库等。但是如何在Javascript动画函数的末尾调用PHP脚本呢
任何指针、代码片段等都将不胜感激^_^
如果之前有人问过这个问题,我深表歉意。您可以使用jquery ajax:
PHP是一种服务器端语言。 JavaScript是一种客户端语言 如果您想执行服务器端代码,您没有选择往返服务器。如果您不想离开页面,那么您唯一的选择就是执行异步请求(akajax) 使用诸如或之类的JavaScript库大大简化了这类任务。例如,您可以使用在脚本末尾执行请求,如下所示:
var req = new Request({url: '/backend/doPHPInsert.php'});
req.send();
在没有AJAX的情况下,可以通过动态创建iFrame(或获取资源的任何其他元素)来实现这一点。AJAX是异步Javascript和XML, 它是一种Javascript技术,允许您向服务器发送请求(就像您输入URL时浏览器所做的那样),并将响应以Javascript字符串形式显示,而不是在页面中呈现 问题是不同的浏览器实现AJAX的方式不同,所以我建议使用jQuery进行抽象 使用jQuery执行此操作:
<script>
$.get("backend.php",{param:value},callbackFunction);
callbackFunction(data)
{
alert(data);
}
</script>
$.get(“backend.php”,{param:value},callbackFunction);
调用函数(数据)
{
警报(数据);
}
我知道使用AJAX是可能的,尽管单独使用Javascript是可能的吗
如果你不想使用XHR,你可以使用这个丑陋的黑客
var request = 'mysql-insert.php',
image = new Image();
image.onload = function() {
// Success
}
image.onerror = function() {
// Error
}
image.src = request;
除了在AJAX广泛使用之前(或者需要进行跨域请求)才真正使用它
我只会使用AJAX。jQuery为使用XHR提供了一些很好的抽象。这有一些使用纯XMLHttpRequest的好例子: (特别是,向下滚动到异步示例—现在您正在用煤气做饭。) 编辑:另请参阅其中的一些示例,这些示例用于处理没有本机
window.XMLHttpRequest
的IE版本
现在,让我们坦率地说——是的,使用XHR本身(尤其是跨浏览器)有点迟钝。您可以使用任何东西(jQuery、Dojo、MooTools、Prototype、Closure、YUI等)更轻松地执行XHR,因为除其他外,所有这些工具都为您提供了更简洁的XHR工具
不过,在你开始让图书馆为你做这件事之前,最好先知道你在做什么 如果不想包含jquery库,可以简单地执行以下操作 a) 添加iframe,大小为0px,因此不可见,href为空 b) 在js代码函数中执行此操作
window.frames['iframename'].location.replace('http://....your . php');
这将执行php脚本,例如,您可以进行数据库更新…恰好遇到同样的问题,所以我提出了类似的想法。您所要做的就是添加所需的代码,并将dou脚本函数分配给onclick事件
<script type="text/javascript">
var myIntv;
function do_the_script() {
// play animation ...
var address='fancy_script.php';
var tmp = new XMLHttpRequest();
myIntv=setInterval(function(){
tmp.addEventListener("load", doneHandler, false);
tmp.open("POST", address);
tmp.send(null);
}, 1000);
}
function doneHandler(event) {
// maybe do something when script is executed
clearInterval(myIntv);
}
</script>
var myIntv;
函数do__脚本(){
//播放动画。。。
var address='fancy_script.php';
var tmp=newXMLHttpRequest();
myIntv=setInterval(函数(){
tmp.addEventListener(“加载”,doneHandler,错误);
tmp.开放(“邮政”,地址);
tmp.send(空);
}, 1000);
}
函数doneHandler(事件){
//可能在执行脚本时执行一些操作
clearInterval(myIntv);
}
您可能已经注意到,“调用”地址的代码每1秒执行一次。这是为了确保呼叫次数足够多,以便得到一个肯定的回答,然后呼叫管理员并清除间隔。如果您认为服务器可以更快或更慢地响应,则应相应更改这些毫秒。请参阅:此处不适用。这也可以通过iframes来实现。@AbiusX它回答了一个问题:您可以单独使用JavaScript发出请求吗?我想这意味着没有XHR。我不是说没有XHR的部分,而是关于图像黑客。它用于CSRF而不是用于请求。如果需要,可以添加标记或执行JSONP。图像标签黑客是为XSRF@AbiusX我不知道你刚才说了什么,对不起。@AbiusX:没有安全软件能阻止这一切。。。指向
.php
文件的Image()
对象可以合法使用(加载动态图像)。