将变量传递给外部PHP文件

时间:2011-08-11 00:55:04

标签: php javascript jquery mysql html

我有一个(可能是超级简单的)问题。下面的代码应该是_POST(使用AJAX)一个名为' id'的变量。到名为getYourData.php的外部文件。

我认为问题如下。 '数据'部分似乎没有起作用 - 我甚至尝试将[数据:' 2']简单地放入' 2'在SELECT语句中。但这甚至不起作用。

$.ajax({
        type: 'POST',
        url: 'getYourData.php',
        data: 'id',
        success: function(msg){
            //everything echoed in your PHP-File will be in the 'msg' variable:
            $('#selectTwo').html(msg)
            $('#selectTwo').fadeIn(500);
        }
});

以下是代码的其余部分(已导入代码段 - jquery)

<!-- First Box: click on link shows up second box -->
<div id="selectOne" style="float: left; margin-right: 10px; border: #666 thin solid; padding: 10px;">
  <a href="#" id="1">One</a><br />
  <a href="#" id="2">Two</a><br />
  <a href="#" id="3">Three</a>
</div>

<!-- Second Box: initially hidden with CSS "display: none;" -->
<div id="selectTwo" style="float: left; margin-right: 10px; display: none; border: #666 thin solid; padding: 10px;"></div>

<!-- The JavaScript (jQuery) -->
<script type="text/javascript">

//Do something when the DOM is ready:
$(document).ready(function() {

//When a link in div with id "selectOne" is clicked, do something:
$('#selectOne a').click(function() {
    //Fade in second box:
    $('#selectTwo').fadeIn(500);

    //Get id from clicked link:
    var id = $(this).attr('id');

    $.ajax({
        type: 'POST',
        url: 'getYourData.php',
        data: '2',
        success: function(msg){
            //everything echoed in your PHP-File will be in the 'msg' variable:
            $('#selectTwo').html(msg)
            $('#selectTwo').fadeIn(500);
        }
});

    //Depending on the id of the link, do something:
    if (id == 'one') {
        //Insert html into the second box which was faded in before:
        $('#selectTwo').html('One<br />is<br />selected')
    } else if (id == 'two') {
        $('#selectTwo').html('Two<br />is<br />selected')
    } else if (id == 'three') {
        $('#selectTwo').html('Three<br />is<br />selected')
    }

    });


});
</script>

getYourData.php - 根据&#39; id&#39;创建自定义SELECT语句。从主页传递。出于某种原因,这不起作用。仅在我故意设置dud变量($ id2)

时才有效
<?php


$username="primary";
$password="testpass";
$database="testdb";

mysql_connect(localhost,$username,$password) or die ('Unable to connect...');

mysql_select_db($database) or die('Error: '.mysql_error ());

//Intentionally creating a dud variable will create a good SELECT statement and work
$id2 = "3";

$id = $_POST['id'];
$query = mysql_query('SELECT * FROM members WHERE member_id='.$id);
$result = mysql_fetch_assoc($query);

//Now echo the results - they will be in the callback variable:
echo $result['firstname'].', '.$result['lastname'];

mysql_close();
?>

3 个答案:

答案 0 :(得分:0)

您是否尝试过数据:{id:2} - 对象,而不是数组。

答案 1 :(得分:0)

我相信你的ajax调用中的数据是错误的。 php会在您的调用中引用$ _POST ['id'],但不会发送var ID。

来自:http://api.jquery.com/jQuery.ajax/

  

dataObject,String

     

要发送到服务器的数据。它被转换为查询字符串if   还不是一个字符串。它附加到GET请求的URL。看到   processData选项可防止此自动处理。对象必须   是键/值对。如果value是一个数组,jQuery序列化多个   具有相同键的值基于传统设置的值   (如下所述)。

应该更像这样:

数据:“id = 2”,

答案 2 :(得分:0)

您的AJAX函数中的

data必须采用'id = xxx'的形式。我看到你在变量id中有它。试试data: 'id=' + id。让我感到困惑。

这里的解释是POST数据应该是a=b,c=d,...等形式。这样PHP就可以将它作为$ _POST字典中的键/值对来选择。现在您有一个要发送的变量id(值),并且您还希望它是(键)的名称。因此,您需要data: 'id=' + id。如果id=2,则评估为data: 'id=2',这是正确的。

最终,正如@Stephen指出的那样,最好在数据字段中使用Object,因为它可以说更优雅。 data: {'id': id}也可以正常工作,您可以在将来添加更多变量。