如题,想让一个php文件将数据由URL发送到另一个指定的php或者其他的文件中。
网络资料尝试无果,不知道有没有可以帮忙。
请别只给思路,网络资料代码都已经尝试部分。思路也尝试了部分,但是不成功。
如果可以帮忙最好给出源代码,简单的测试代码即可。
谢谢。补充:主要想实现php和JS的交互,php从数据库中提取数据,然后发送到JS所在的文件由JS提取数据再处理。
两个问题能解决一个就非常感谢了。
网络资料尝试无果,不知道有没有可以帮忙。
请别只给思路,网络资料代码都已经尝试部分。思路也尝试了部分,但是不成功。
如果可以帮忙最好给出源代码,简单的测试代码即可。
谢谢。补充:主要想实现php和JS的交互,php从数据库中提取数据,然后发送到JS所在的文件由JS提取数据再处理。
两个问题能解决一个就非常感谢了。
首先是js.php<script language="javascript">
function createXMLHttp(){
if(window.XMLHttpRequest){ // Mozilla 浏览器
xmlHttp = new XMLHttpRequest();
}else if (window.ActiveXObject){ // IE 浏览器
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}function mytransfer(){
createXMLHttp();
var val=document.getElementById('id1').value;
xmlHttp.open("get","a.php?id="+val,true);//这里是传递给php的值,也就是a.php页接受的值
xmlHttp.onreadystatechange=myreturn;
xmlHttp.send(null);
}function myreturn(){
if(xmlHttp.readyState == 4){
var myabc=xmlHttp.responseText;//接收a.php页回来的值
var arr=myabc.split("?");
document.getElementById('id2').value=arr[0];
document.getElementById('id3').value=arr[1];
}
}
</script><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<body>
js传递给a.php页的值:<input name="id1" id="id1" type="text" size="30" onblur="return mytransfer()"/>
<br>
js接收a.php页返回的值1:<input name="id2" id="id2" type="text" size="30" />
<br>
js接收a.php页返回的值2:<input name="id3" id="id3" type="text" size="30" />
</body>
[code]
a.php:[code=PHP]<?php
PHP:header('Content-Type:text/html;charset=GB2312');//这段编码很重要,不然会出现乱码
$id=$_GET[id];
//数据的内容也可以在这边做,具体怎么连接查询数据库自己找资料吧
echo $id;//返回js.php的值1
echo "?";
echo "2";//返回js.php的值2?>
function createXMLHttp(){
if(window.XMLHttpRequest){ // Mozilla 浏览器
xmlHttp = new XMLHttpRequest();
}else if (window.ActiveXObject){ // IE 浏览器
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}function mytransfer(){
createXMLHttp();
var val=document.getElementById('id1').value;
xmlHttp.open("get","a.php?id="+val,true);//这里是传递给php的值,也就是a.php页接受的值
xmlHttp.onreadystatechange=myreturn;
xmlHttp.send(null);
}function myreturn(){
if(xmlHttp.readyState == 4){
var myabc=xmlHttp.responseText;//接收a.php页回来的值
var arr=myabc.split("?");
document.getElementById('id2').value=arr[0];
document.getElementById('id3').value=arr[1];
}
}
</script><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<body>
js传递给a.php页的值:<input name="id1" id="id1" type="text" size="30" onblur="return mytransfer()"/>
<br>
js接收a.php页返回的值1:<input name="id2" id="id2" type="text" size="30" />
<br>
js接收a.php页返回的值2:<input name="id3" id="id3" type="text" size="30" />
</body>
a.php:<?php
PHP:header('Content-Type:text/html;charset=GB2312');//这段编码很重要,不然会出现乱码
$id=$_GET[id];
//数据的内容也可以在这边做,具体怎么连接查询数据库自己找资料吧
echo $id;//返回js.php的值1
echo "?";
echo "2";//返回js.php的值2?>
现在的问题是如何将这个步骤反过来,用php发送URL然后用js去get或者Post收。
通过ajax
js文件 -> php文件 -> database
上面这个完全可以实现,也已经实现的很完美。
现在我需要
database -> php文件 -> js文件 (JS用GET 或者 POST 接收)
请问能不能有方法去实现
php 到 js 直接可以<script language="javascript">
var jsdata = <?php echo json_encode($phpdata); ?>;........................
</script>
如果你非要用外部 js,可以直接修改js文件为 post.js.php
<script src="post.js.php".........post.js.php 内容直接写JS跟PHP
var jsdata = <?php echo json_encode($phpdata); ?>;
var jsdata = <?php echo json_encode($phpdata); ?>;
</script>
<script src="post.js".........post.js 可以直接使用变量 jsdata
访客既然访问了,那由客户端的js来触发请求,反馈回json数据,客户端再处理不可以吗?
<head>
<meta http-equiv = "Content-Type" content = "text/html; charset = gb2312">
<title>AddAndRemove</title>
<style>
<!--
.clkLayer
{
width: 240px;
height: 110px;
border: 1px solid black;
background-color: yellow;
text-align:left;
}
.afterModifyLayer
{
width: 240px;
height: 110px;
border: 1px solid black;
background-color: yellow;
text-align:left;
} .contentTable input
{
width: 50px;
height: 20px;
}
.contentTable select
{
width: 50px;
height: 20px;
}
-->
</style>
<script language = "javascript" charset = "gb2312">
//<-- 基础功能模块 --------------------------------------------------------------------------------START-----/
function delLayer( tagName, idNum ) // 移除一个层, 或指定的节点
{
var parentNode = document.getElementById( tagName );
var indexNode = document.getElementById( idNum );
parentNode.removeChild( indexNode );
}
/*
// 和delLayer一模一样, 但是会出现问题. 可能是名称起冲突, 只要名字稍改动就成功
function removeNode( tagName, nodeName )
{
var parentNode = document.getElementById( tagName );
var indexNode = document.getElementById( nodeName );
parentNode.removeChild( indexNode );
// notice index_clkLayer can passed but "index_clkLayer" not
}
*/
function addNode( baseNode, insertNode, clsName, idNum )
{
var newNode = document.createElement( insertNode );
newNode.className = clsName;
newNode.id = idNum;
var parentNode = document.getElementById( baseNode );
parentNode.appendChild( newNode );
// notice div can passed but "div" not
}
function replaceFun( idNum, content ) // 该函数接受两个参数, 一个是确定要操作标签(位置)的id => idNum 一个就是操作中要使用到的内容
{
var indexNode = document.getElementById( idNum );
// cerOperWin <abbreviation 缩写> customer operation windows
indexNode.innerHTML = content;
}
//<-- 基础功能模块 --------------------------------------------------------------------------------END-------/
// 第一次提交
function submit()
{
delLayer( "bodyID", "clkLayer" ); // removeNode( tagName, nodeName ) => tagName
addNode( "bodyID", "div", "clkLayer", "clkLayer" );
var rpeButton =
"The Data from DataBase!<br>"+
"<br><br><br>"+
"<div id = \"cerOperWin\">"+
"<tr>"+
"<td><button type = \"button\" onclick = \"modify();\">modify</button></td>"+
"<td><button type = \"button\" onclick = \"delect();\">delect</button></td>"+
"</tr>"+
"</div>";
replaceFun( "clkLayer", rpeButton ); //replaceFun 既可以替换按键又可以替换内容
}
// delect按键触发功能
function delect()
{
delLayer( 'bodyID', 'clkLayer' );
addNode( "bodyID", "div", "clkLayer", "clkLayer" );
var rpeContent =
"<div class = \"switchLayer\" id = \"switchLayer\">"+
"<tr>"+
"<td>闹钟状态提示:</td>"+
"<td><input type = \"radio\" name = \"hidClock\" value = \"1\" checked>关闭</td>"+
"<td><input type = \"radio\" name = \"hidClock\" value = \"0\">开启</td>"+
"</tr>"+
"</div>"+
"<br>"+
"<div class = \"contentTable\" id = \"contentTable\">"+
"<tr>"+
"<td><input type = \"text\" name = \"inputYear\" id = \"inputYear\">年</td>"+
"<td><input type = \"text\" name = \"inputMonth\" id = \"inputMonth\">月</td>"+
"<td><input type = \"text\" name = \"inputDate\" id = \"inputDate\">日</td>"+
"</tr>"+
"<tr>"+
"<td>"+
"<select name = \"AMORPM\">"+
"<option name = \"AM\" value = \"AM\" selected = \"selected\">AM</option>"+
"<option name = \"PM\" value = \"PM\">PM</option>"+
"</select>"+
"</td>"+
"<td><input type = \"text\" name = \"inputHour\" id = \"inputHour\"> : </td>"+
"<td><input type = \"text\" name = \"inputMinute\" id = \"inputMinute\"></td>"+
"</tr>"+
"<tr>"+
"<td><button type = \"button\" onclick = \"submit();\">submit</button></td>"+
"</tr>"+
"</div>";
replaceFun( 'clkLayer', rpeContent );
} // 返回按键中功能
function backButton()
{
delLayer( "bodyID", "afterModifyLayer" );
var rpeButton =
"The Data from DataBase!<br>"+
"<br><br><br>"+
"<div id = \"cerOperWin\">"+
"<tr>"+
"<td><button type = \"button\" onclick = \"modify();\">modify</button></td>"+
"<td><button type = \"button\" onclick = \"delect();\">delect</button></td>"+
"</tr>"+
"</div>";
replaceFun( "clkLayer", rpeButton );
} // 触发修改按键
function modify()
{
// 替换按键
var rpeButton = "<tr>"+
"<td><button type = \"button\" onclick = \"backButton();\">back</button></td>"+
"</tr>";
replaceFun( 'cerOperWin', rpeButton ); // 添加一个可以传数据的新层
addNode( "bodyID", "div", "afterModifyLayer", "afterModifyLayer" ); // 装饰新层 使用replaceFun(); 函数
var rpeContent = "修改数据输入窗口"+
"<br><br>"+
"<div class = \"contentTable\" id = \"contentTable\">"+
"<tr>"+
"<td><input type = \"text\" name = \"inputYear\" id = \"inputYear\">年</td>"+
"<td><input type = \"text\" name = \"inputMonth\" id = \"inputMonth\">月</td>"+
"<td><input type = \"text\" name = \"inputDate\" id = \"inputDate\">日</td>"+
"</tr>"+
"<tr>"+
"<td>"+
"<select name = \"AMORPM\">"+
"<option name = \"AM\" value = \"AM\" selected = \"selected\">AM</option>"+
"<option name = \"PM\" value = \"PM\">PM</option>"+
"</select>"+
"</td>"+
"<td><input type = \"text\" name = \"inputHour\" id = \"inputHour\"> : </td>"+
"<td><input type = \"text\" name = \"inputMinute\" id = \"inputMinute\"></td>"+
"</tr>"+
"<tr>"+
"<td><button type = \"button\" onclick = \"modify_submit();\">submit</button></td>"+
"</tr>"+
"</div>";
replaceFun( 'afterModifyLayer', rpeContent );
}
function modify_submit()
{
delLayer( "bodyID", "clkLayer" );
delLayer( "bodyID", "afterModifyLayer" );
addNode( "bodyID", "div", "clkLayer", "clkLayer" );
var rpeButton =
"修改之后的数据<br>"+
"The Data from DataBase!<br>"+
"<br><br><br>"+
"<div id = \"cerOperWin\">"+
"<tr>"+
"<td><button type = \"button\" onclick = \"modify();\">modify</button></td>"+
"<td><button type = \"button\" onclick = \"delect();\">delect</button></td>"+
"</tr>"+
"</div>";
replaceFun( "clkLayer", rpeButton );
}
</script>
</head>
<body id = "bodyID"> <div class = "clkLayer" id = "clkLayer">
<!-- 选择部分 -->
<div class = "switchLayer" id = "switchLayer">
<tr>
<td>闹钟状态提示:</td>
<td><input type = "radio" name = "hidClock" value = "1" checked>关闭</td>
<td><input type = "radio" name = "hidClock" value = "0">开启</td>
</tr>
</div>
<table class = "contentTable" id = "contentTable">
<tr>
<td><input type = "text" name = "inputYear" id = "inputYear">年</td>
<td><input type = "text" name = "inputMonth" id = "inputMonth">月</td>
<td><input type = "text" name = "inputDate" id = "inputDate">日</td>
</tr>
<tr>
<td>
<select name = "AMORPM">
<option name = "AM" value = "AM" selected = "selected">AM</option>
<option name = "PM" value = "PM">PM</option>
</select>
</td>
<td><input type = "text" name = "inputHour" id = "inputHour"> : </td>
<td><input type = "text" name = "inputMinute" id = "inputMinute"></td>
</tr>
<tr>
<td><button type = "button" onclick = "submit();">submit</button></td>
</tr>
</table>
</div>
</body>
</html>就是以上代码我想和数据库连接
1.我希望提交后能看见的是数据库的反馈,也就是将信息从一个新的窗口中显示出提交的数据,这个数据是从数据库来的;
2.当用户点击modify的时候出现两个窗口;
3.在准备修改数据的窗口中输入信息后再点击submit又可以进行提交并删除原数据然后又改变窗口中的值。第二步和第三步其实都只是对第一步的一个具体的应用。
我现在实现的方法就是先处理窗口内的数据,然后通过ajax发送给另一页的php,php将值存入数据库。
但是反的方法就不会了,需要
database -> 利用php所在的文件获取数据库中我需要的数据 -> 然后将数据传入js代码所在的文件中 (JS用GET 或者 POST 接收)最后Js代码接收数据并处理。这样一个描述清楚吗?
关键反过来的话不是很清楚怎么做了,麻烦给点思路咯。
ajax怎么接受php的数据,这个就一点都没思路。
又仔细读了一遍,
你的意思是不是:
有A,B两个窗口,你从A窗口提交,希望结果自动返回到B窗口?
http://www.ydtuiguang.com/js/ajax.jsresponseText就是php echo/print/print_r等的输出内容 //回调
this.StateChange = function(){
try{
if(_C.XmlHttp.readyState == 4) {
if(_C.CallBackFunc)_C.CallBackFunc(_C.XmlHttp.responseText, true, _C.FuncArguments);
_C.XmlHttp = null;
}
}catch(e){
_C.XmlHttp = null;
}
}