如题,想让一个php文件将数据由URL发送到另一个指定的php或者其他的文件中。
网络资料尝试无果,不知道有没有可以帮忙。
请别只给思路,网络资料代码都已经尝试部分。思路也尝试了部分,但是不成功。
如果可以帮忙最好给出源代码,简单的测试代码即可。
谢谢。补充:主要想实现php和JS的交互,php从数据库中提取数据,然后发送到JS所在的文件由JS提取数据再处理。
两个问题能解决一个就非常感谢了。

解决方案 »

  1.   

    php从数据库中提取数据  这个内容我就不太相信搜不到任何资料了,你的php环境搭建好了没。
      

  2.   

    你可以传参数过去,然后在另外一个页面获取参数,php 和 js的交互,你看下json
      

  3.   

    发送到Js 所在的文件?你这个Js在什么地方?你先告诉我
      

  4.   

    我就做个简单的演示给你,主要就是两个页面js.php与a.php,希望通过这个例子你能简单的了解ajax,
    首先是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?>
      

  5.   

    首先是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>
    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?>
      

  6.   

    我完全可以用ajax把数据传给php,然后php根据接收到的数据进行相应的处理。
    现在的问题是如何将这个步骤反过来,用php发送URL然后用js去get或者Post收。
      

  7.   

    我用简单的图示吧
    通过ajax
    js文件 -> php文件 -> database
    上面这个完全可以实现,也已经实现的很完美。
    现在我需要
    database -> php文件 -> js文件  (JS用GET 或者 POST 接收)
    请问能不能有方法去实现
      

  8.   

    lz 恐怕又是一个搞不清服务器端客户端的人吧
    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); ?>;
      

  9.   

    还有可以是 php 文件输出<script language="javascript">
    var jsdata = <?php echo json_encode($phpdata); ?>;
    </script>
    <script src="post.js".........post.js 可以直接使用变量 jsdata
      

  10.   

    js是在客户端浏览器上运行的,你需要的php推送的需求,应该可以变通一下的吧?既然js是展示给访客的,在访客不访问的时候推送有什么意义呢?
    访客既然访问了,那由客户端的js来触发请求,反馈回json数据,客户端再处理不可以吗?
      

  11.   

    用iframe做,用parent+javascript接受
      

  12.   

    13 楼怒了。<html>
    <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\">&nbsp;:&nbsp;</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\">&nbsp;:&nbsp;</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">&nbsp;:&nbsp;</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>就是以上代码我想和数据库连接
      

  13.   

    准确的说,运行代码后可以对这个窗口,可以对窗口中输入的内容进行提交。
    1.我希望提交后能看见的是数据库的反馈,也就是将信息从一个新的窗口中显示出提交的数据,这个数据是从数据库来的;
    2.当用户点击modify的时候出现两个窗口;
    3.在准备修改数据的窗口中输入信息后再点击submit又可以进行提交并删除原数据然后又改变窗口中的值。第二步和第三步其实都只是对第一步的一个具体的应用。
    我现在实现的方法就是先处理窗口内的数据,然后通过ajax发送给另一页的php,php将值存入数据库。
    但是反的方法就不会了,需要
    database -> 利用php所在的文件获取数据库中我需要的数据 -> 然后将数据传入js代码所在的文件中 (JS用GET 或者 POST 接收)最后Js代码接收数据并处理。这样一个描述清楚吗?
      

  14.   

    你需要的就是大名鼎鼎的 ajax....
      

  15.   

    嗯,ajax你得到返回信息显示出来不就可以了吗?
      

  16.   


    关键反过来的话不是很清楚怎么做了,麻烦给点思路咯。
    ajax怎么接受php的数据,这个就一点都没思路。
      

  17.   


    又仔细读了一遍,
    你的意思是不是:
    有A,B两个窗口,你从A窗口提交,希望结果自动返回到B窗口?
      

  18.   

    楼主是知道ajax可以提交数据。不知道ajax也能返回数据。其它这俩根本就是同一代码。没理解错了吧?看我ajax类
    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;
    }
    }