如何将参数传递给php页面而不必加载它

时间:2011-07-21 21:23:50

标签: php mysql html google-maps

如何将参数从html页面(map.html)传递到php(createxml.php)而无需打开php页面?我在html页面(map.html)中加入了googlemaps,所以我希望用户在html页面上的表单上输入数据,然后将其发送到php(createxml.php),然后将连接到mySQL DB并创建xml格式响应html页面使用此xml输出在地图上创建位置,因为它包含经度和纬度。 我在php页面(createxml)的标题中使用了以下代码,但它显示了php文件的内容,暂时将我重定向到map.html 感谢您的时间,如果需要,我可以发布所有代码。

      <meta http-equiv="refresh" content="0;url=http://localhost/map.html/"> 

5 个答案:

答案 0 :(得分:2)

使用AJAX非常简单,使用jQuery你不必了解它:) 因此,只需导入最新的jQuery Library

然后你有你的表格:

<form id="my_form">
<input type="text" name="param1" />
<input type="text" name="param2" />
<input type="hidden" name="action" value="do_stuff" />
<input type="submit" value="Submit" />
</form>

在其下方的某处,您只需粘贴这个小的javascript函数,它处理表单的提交:

<script>
  $('#my_form').submit(function(){
    var post_params = $('#my_form').serialize();
    $('#waiting').show();
    $.post('the_page_you_are_on.php', post_params, function(data) {
      $('#waiting').hide();
      return false;
    })
  });
</script>

(id为“waiting”的元素(div,p ...)可以包含其中一个花哨的ajax加载图片,但不是必要的!:)如果你想要一个显示,请通过谷歌找到一个,将其设置为#waiting-element的背景图像,并将其显示设置为none(CSS)。

函数本身只调用你所在的页面然后你的后期数组中有表单变量,所以你的页面顶部看起来像这样:

<?php

if(isset($_POST['action'])) {
  switch($_POST['action']) {
    case 'do_stuff' :
      $param1 = $_POST['param1'];
      $param2 = $_POST['param2'];

      //do some DB-stuff etc.
    break;
  }
}

?>

我希望有所帮助!

答案 1 :(得分:1)

这是一个糟糕的主意,但是因为你不想使用AJAX,你可以将PHP放在一个框架中并重新加载该部分。再一次,可怕的想法,但你最接近你将不使用AJAX。

虽然有用,但AJAX实际上只是javascript中的一个函数。要学习并不难。

答案 2 :(得分:1)

如果您只是尝试从Web浏览器向PHP页面传递参数,除了'Ajax'之外还有其他方法可以做到这一点。查看此页面并查看源代码(请务必查看包含的javascript文件的来源:http://hazlo.co/showlist.php?s=chrome&i=4e289d078b0f76b750000627&n=TODO

它使用一种非常基本的方法来更改图像元素的src,但是将信息传递给图像请求的查询字符串中的Web服务器(PHP页面)。在这个例子中,我实际上关心结果,它们被表示为图像,但听起来你只是想将数据传递给服务器,所以如果你愿意,你可以返回1像素的图像。顺便说一句,不要被正在使用的URL所迷惑,服务器规则告诉apache在检查时处理特定的PHP文件,请求GIF。

您应该使用它并使用firebug或chrome的内置调试器来监视发送到服务器的请求。

答案 3 :(得分:0)

如果您没有请求并处理输出,则无法从PHP脚本中获取任何结果。如果您不想离开当前页面,必须使用AJAX

“但它会在短时间内显示php文件的内容”原因是,您的浏览器首先需要加载整个页面,然后启动META重定向。您不需要重定向来从服务器加载数据,但如果您真的想要,则应该使用redirect的HTTP标头。

答案 4 :(得分:0)

好的家伙经过几个小时的头痛我终于找到了解决方案!基本上我从我的map.html中调用了我的xmlproduce.php,lemme解释所以也许会帮助别人:

maps.html包含一个googlmap API Javascript函数,该函数调用我的createxml.php,名为second.php

    GDownloadUrl("second.php", function(data) )

我所做的是通过在URL中添加一些参数来调整对second.php的调用,如:

     GDownloadUrl("second.php?strt="+ysdate+"/"+msdate+"/"+dsdate+"&end="+yedate+"  /"+medate+"/"+dedate+"&id="+ide, function(data)

这是发送second.php所需的参数,所以之后我做了一个小的html表单,在同一个文件(map.html)上调用了googlemap api的脚本,将表单中的参数传递给了GDownloadUrl i如上所述,表格的代码是:

    form method="get" action="">
        IMEI: <input type="text" id="id" name="id" size="25" /> <br />

        Start Date: <input type="text" id="ysdate" name="ysdate" size="4" value="2000" /> <input type="text" id="msdate" name="ysdate" size="1" /> <input type="text" id="dsdate" name="dsdate" size="1" /> <br/>
        End Date:   <input type="text" id="yedate" name="yedate" size="4" /> <input type="text" id="medate" name="ysdate" size="1" /> <input type="text" id="dedate" name="dedate" size="1" /> <br/>

                    <input type="button" value="submit" onClick="load()" />
        </form>

之后我在表单上为允许的值添加了额外的约束。 感谢大家的帮助,你可以随时询问是否有人需要澄清。