无法将参数传递给jquery加载网址

时间:2014-10-15 07:11:09

标签: javascript php jquery

我的代码如下

$(document).ready(function(){

      var bed = $( "input[name=bed]:checked" ).val();
      var bud = $( "input[name=bud]:checked" ).val();
      var loc = $("#autocomplete").val();

      $("#search_list").load('main_frame2.php?bed='+bed+'&bud='+bud+'&loc1='+loc);
    });

main_frame2.php

<?
    session_start();

    echo $loc = $_GET['loc1']   ;
    echo $bed = $_REQUEST['bed']    ;
    echo $bud = $_REQUEST['bud']    ;

?>

我正在获得床和芽的价值。但是没有得到loc。 但是如果我在jquery函数中使用alert m获取未传递给main_frame2.php

的loc name

7 个答案:

答案 0 :(得分:1)

load发送GET请求,但您的PHP正在$_POST查找loc1值。尝试使用$_REQUEST或更好,$_GET来检索您的查询字符串值。

<?
    session_start();
    echo $loc = $_GET['loc1'];
    echo $bed = $_GET['bed'];
    echo $bud = $_GET['bud'];
?>

答案 1 :(得分:1)

jQuery加载执行GET。因此,不要将$loc$_POST['loc1'];一起使用,请尝试$_GET['loc1'];

答案 2 :(得分:1)

使用$_GET代替$_POST,您不会发布,而是获取数据。

jQuery的解释

  

如果数据作为对象提供,则使用POST方法;除此以外,   假设GET。

答案 3 :(得分:1)

替换PHP文件中的第一行代码
  

echo $ loc = $ _GET [&#39; loc1&#39;];

答案 4 :(得分:1)

如果您阅读文档,则说

  

.load(url [,data] [,complete])

Documentation

这意味着您可以以JSON格式传递第二个争论中的数据。此外,.load内部使用GET方法,因此相应地修改您的PHP代码。

答案 5 :(得分:1)

试试这个:

<强>的jQuery

$(document).ready(function(){
      var bed = $( "input[name=bed]:checked" ).val();
      var bud = $( "input[name=bud]:checked" ).val();
      var loc = $("#autocomplete").val();

      $("#search_list").load('main_frame2.php', {bed: bed, bud: bud: loc: loc}, function(){
           console.log('PHP Loaded');
      });
});

然后在你的PHP上:

<?
    session_start();

    echo $loc = $_GET['loc']  ; <<== since you are getting data from URL
    echo $bed = $_REQUEST['bed']; <<== you can also use $_GET['bed']
    echo $bud = $_REQUEST['bud']; <<== you can also use $_GET['bud']

?>

答案 6 :(得分:1)

您正在传递URL中的变量。这意味着您正在向 main_frame2.php 发出GET个请求。

the documentation $_REQUEST返回所有 HTTP请求变量:

  

默认情况下包含$_GET$_POST$_COOKIE

内容的关联数组

因此,您可以将所有变量视为$_REQUEST['foo']$_GET['foo']

可能会进一步澄清事情的relevant post on SO。希望它能让你开始朝着正确的方向前进。