
如何让javascript调用php代码??
当一个表单中的文本域发生变化时,会产生js的onchange()事件。。要让这个事件去执行一段php代码。。该如何实现。。...
当一个表单中的文本域发生变化时,会产生js的onchange()事件。。要让这个事件去执行一段php代码。。该如何实现。。
展开
2个回答
展开全部
可以用jquery的类,网上好多例子
如者自己写:如
js中写入
//ajax请求
function httpRequest() { this.ro = null; this.initRequest(); }
httpRequest.prototype = {
initRequest: function() {
var self = this;
if(this.ro != null) return this.ro;
try {
this.ro = new XMLHttpRequest();
}catch(e) {
this.ro = new ActiveXObject("Microsoft.XMLHTTP");
}
this.ro.onreadystatechange = function() {
if (self.ro.readyState == 4) {
clearInterval(self.tl);
if(self.ro.status == 200)
self.success();
else self.failure();
}else
self.loading();
}
},
request: function(url,obj) {
obj.method = obj.method || 'get';
url = obj.param?url+(url.indexOf('?')>-1?'&':'?')+obj.param:url;
//alert(url);
try {
this.ro.open(obj.method,url,true);
if(obj.method == 'post')
this.ro.setRequestHeader("Content-type","application/x-www-form-urlencoded");
//this.param = this.param || obj.param;alert(this.param);
this.s = obj.onSuccess;
this.l = obj.onLoading;
this.f = obj.onFailure;
this.el = obj.el;
if(obj.timeout) {
this.t = 1000*obj.timeout + (new Date()).getTime();
this.tl = setInterval(this.listen,500);
}
//alert(this.tl);
this.ro.send(this.param?this.param:null);
}catch(e) {}
},
success: function() {
//alert(this.tl);
if(typeof this.s == 'function')
(this.s)(this.ro,this.el);
else return;
},
loading: function() {
if(typeof this.l == 'string')
eval(this.l+"()");
else if(typeof this.l == 'function')
(this.l)(this.el);
else return;
},
failure: function() {
if(typeof this.f == 'string')
eval(this.f+"()");
else if(typeof this.f == 'function')
(this.f)(this.ro,this.el);
else return;
},
serialize: function(fm) {
//alert('xxxxxxxxx');
var res = [];
var eles = $(fm).elements;
for(var i=0;i<eles.length;i++)
{
if((eles[i].type == 'radio' || eles[i].type == 'checkbox') && eles[i].checked == false)
{
}
else if(eles[i].disabled == false)
{
res[i] = encodeURI(eles[i].name)+'='+encodeURI(eles[i].value);
}
}
this.param = res.join('&');
//alert(this.param);
},
listen: function() {
if(this.tl)
if((new Date()).getTime()>this.t && this.ro.readyState!=4) {
this.ro.abort();
clearInterval(this.tl);
}
},
alert: function(test) {
//alert(this.serialize(test));
document.write(unescape(this.serialize(test)));
}
}
//简化调用函数
function $()
{
var elements = new Array();
for(var i=0;i<arguments.length;i++) {
var element = arguments[i];
if(typeof element == "string")
element = document.getElementById(element) || document.getElementsByName(element)[0];
if(arguments.length == 1)
return element;
elements.push(element);
}
return elements;
}
调用
function doComment(type)
{
var obj = new Object();
obj.method = 'post';
obj.onSuccess=function(r,ele)
{
if(r.responseText == 'ok')
{
}
};
obj.onLoading=function(){
};
obj.onFailure=function(){
alert('失败');
};
var oRequest = new httpRequest();
oRequest.serialize('commentform');
oRequest.request("php文件地址?参数名=参数值&参数名2=参数值2,obj);
}
如者自己写:如
js中写入
//ajax请求
function httpRequest() { this.ro = null; this.initRequest(); }
httpRequest.prototype = {
initRequest: function() {
var self = this;
if(this.ro != null) return this.ro;
try {
this.ro = new XMLHttpRequest();
}catch(e) {
this.ro = new ActiveXObject("Microsoft.XMLHTTP");
}
this.ro.onreadystatechange = function() {
if (self.ro.readyState == 4) {
clearInterval(self.tl);
if(self.ro.status == 200)
self.success();
else self.failure();
}else
self.loading();
}
},
request: function(url,obj) {
obj.method = obj.method || 'get';
url = obj.param?url+(url.indexOf('?')>-1?'&':'?')+obj.param:url;
//alert(url);
try {
this.ro.open(obj.method,url,true);
if(obj.method == 'post')
this.ro.setRequestHeader("Content-type","application/x-www-form-urlencoded");
//this.param = this.param || obj.param;alert(this.param);
this.s = obj.onSuccess;
this.l = obj.onLoading;
this.f = obj.onFailure;
this.el = obj.el;
if(obj.timeout) {
this.t = 1000*obj.timeout + (new Date()).getTime();
this.tl = setInterval(this.listen,500);
}
//alert(this.tl);
this.ro.send(this.param?this.param:null);
}catch(e) {}
},
success: function() {
//alert(this.tl);
if(typeof this.s == 'function')
(this.s)(this.ro,this.el);
else return;
},
loading: function() {
if(typeof this.l == 'string')
eval(this.l+"()");
else if(typeof this.l == 'function')
(this.l)(this.el);
else return;
},
failure: function() {
if(typeof this.f == 'string')
eval(this.f+"()");
else if(typeof this.f == 'function')
(this.f)(this.ro,this.el);
else return;
},
serialize: function(fm) {
//alert('xxxxxxxxx');
var res = [];
var eles = $(fm).elements;
for(var i=0;i<eles.length;i++)
{
if((eles[i].type == 'radio' || eles[i].type == 'checkbox') && eles[i].checked == false)
{
}
else if(eles[i].disabled == false)
{
res[i] = encodeURI(eles[i].name)+'='+encodeURI(eles[i].value);
}
}
this.param = res.join('&');
//alert(this.param);
},
listen: function() {
if(this.tl)
if((new Date()).getTime()>this.t && this.ro.readyState!=4) {
this.ro.abort();
clearInterval(this.tl);
}
},
alert: function(test) {
//alert(this.serialize(test));
document.write(unescape(this.serialize(test)));
}
}
//简化调用函数
function $()
{
var elements = new Array();
for(var i=0;i<arguments.length;i++) {
var element = arguments[i];
if(typeof element == "string")
element = document.getElementById(element) || document.getElementsByName(element)[0];
if(arguments.length == 1)
return element;
elements.push(element);
}
return elements;
}
调用
function doComment(type)
{
var obj = new Object();
obj.method = 'post';
obj.onSuccess=function(r,ele)
{
if(r.responseText == 'ok')
{
}
};
obj.onLoading=function(){
};
obj.onFailure=function(){
alert('失败');
};
var oRequest = new httpRequest();
oRequest.serialize('commentform');
oRequest.request("php文件地址?参数名=参数值&参数名2=参数值2,obj);
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用ajax异步的去掉,网上有很多例子的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询