我有一个(可能是超级简单的)问题。下面的代码应该是_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();
?>
答案 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)
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}
也可以正常工作,您可以在将来添加更多变量。