Php 使用ajax发送和检索值的问题
这是我的预览问题的一个更清晰的代码,其思想是使用ajax发送和检索一个值,但是该值没有被发送,ajax似乎也不起作用。我更新了这段代码,因为这样它可以很容易地在任何机器上测试。第一次使用ajax。代码如下: JavascriptPhp 使用ajax发送和检索值的问题,php,jquery,ajax,Php,Jquery,Ajax,这是我的预览问题的一个更清晰的代码,其思想是使用ajax发送和检索一个值,但是该值没有被发送,ajax似乎也不起作用。我更新了这段代码,因为这样它可以很容易地在任何机器上测试。第一次使用ajax。代码如下: Javascript <script> jQuery(document).ready(function() { jQuery('#centro').click( function() { $.ajax({ url: 'request.php', t
<script>
jQuery(document).ready(function() {
jQuery('#centro').click( function() {
$.ajax({
url: 'request.php',
type:'POST',
data: $("#form").serialize(),
dataType: 'json',
success: function(output_string){
alert(output_string);
$('#cuentas').html(output_string);
} // End of success function of ajax form
}); // End of ajax call
});
}
});
</script>
jQuery(文档).ready(函数(){
jQuery(“#centro”)。单击(函数(){
$.ajax({
url:'request.php',
类型:'POST',
数据:$(“#表单”).serialize(),
数据类型:“json”,
成功:函数(输出字符串){
警报(输出字符串);
$('#cuentas').html(输出字符串);
}//ajax表单的成功结束函数
});//ajax调用结束
});
}
});
HTML:
看起来您从未告诉过AJAX文章名为“centro”,请尝试更改以下内容:
data: $("#form_"+i).serialize(),
为此
data: { 'centro' : $("#form_"+i).serialize()},
试试这个:
HTML
<?php
$i=0;
$f=0;
$consulta = $db->consulta("SELECT * FROM centro");
if($db->num_rows($consulta)>0){
while ($resultados1 = $db->fetch_array($consulta)){ ?>
<form id="form_<?php echo $f++; ?>"> //begin form with its id
<div class="centro" id="centro_<?php echo $i++; ?>">
<a href="#"> <?php echo $resultados1['nombre_centro']; ?></a>
<br>
<input type="hidden" name="centro" value="<?php echo $resultados1['id_centro']; ?>">
<!--this is the data that is going to be sent. I set up a hidden input to do it.-->
</div>
</form>
<div id="cuentas" class="cuentas">
<!--where data is going to be displayed-->
</div>
<br>
<?php
}
}
?>
我在通过POST
方法调用ajax时遇到了同样的问题。我的数据实际上是在消息体中传递的。我必须通过以下方法访问它:
php://input
这是一个只读包装器流,允许您从消息体读取原始数据
有关此包装器的更多信息,请访问
将以下内容添加到PHP文件中:
$centro = file_get_contents("php://input");
// Depending on how you pass the data you may also need to json_decode($centro)
echo json_encode($centro);
// See if you get back what you pass in
这将读取消息正文(带有我发布的数据),我可以访问其中的值
希望这有帮助。尝试在ajax帖子中使用以下代码:
jQuery('#centro_'+i).click( function() {
$.ajax({
data: $("#centro_"+i).closest("form").serialize(),
dataType:"html",
success:function (data, textStatus) {
$('#cuentas').html(data);
alert(data);},
type:"post",
url:"load_cuentas.php"
});
});
什么是var\u转储($\u POST)
在您的load\u cuentas.php
之上,放置var\u dump($\u POST)代码>并查看它首先得到的值是什么?请与我们共享输出us@HerlandCid他的意思是添加var\u dump($post)
,并将结果添加到您的问题中。当然,由于响应不再是有效的json,这会使ajax请求失败;我什么也得不到。不确定我是否正在应用var\u转储($\u POST);我假设它是一个函数,在他的第一个代码片段中,它是表单中的一个隐藏输入。谢谢@KirKill,我更新了,但它仍然在警报中抛出null。尝试查看$_POST['centro']是否真的是问题所在,回显它并在退出后,您应该在警报中看到它的值。如果您想调试AJAX调用,我建议您使用Google Chrome控制台,当您进行AJAX调用时,您将在控制台的网络选项卡中看到它们,因此当您单击调用时,您将看到实际的PHP页面,如果错误是PHP端,您将能够看到它。您说$\u POST['centro']总是空的,那么可能是您的jquery选择器出了问题?尝试用$('input[name=“centro”]”替换$(“#form"+i).serialize()。serialize()感谢@War10ck的回答:)它给出了一个结果,这次的结果如下blank@HerlandCid没问题,伙计。您希望结果是什么?在php文件中,如果它获取变量并运行查询,结果应该是“test text”@War10ck@HerlandCid那么查询返回的是空白还是回音返回的是空白?对不起,我只是有点困惑。在调用查询之前,该值是否会对php代码产生影响?如果你正在找回你的价值,那就是第一步。如果你仍然没有得到一个值(在你调用你的查询之前),那么我们需要深入挖掘你的代码。使用变量的回音是空白的@War10ck。我试图回应$_POST['centro'];这就是BlankThank@Ahmed,带有post的ajax现在可以工作了。但警报仍显示为空白。请尝试以html:echo$output\u string;谢谢@AhmedAtta我做了$centro=`$_POST['centro'];echo$centro;`在ajax post数据类型中使用时:“json”必须在file load_cuentas.php json_encode()函数中使用。非常感谢@Rohan,这一次它抛出了一个“[]”问题在于$_post['centro'];不知道为什么它没有被发送检查您在$\u POST['centro']
中得到了什么,同时检查您的查询是否返回非空。您可以添加两行:$output\u string['sql']=“SELECT*FROM cuenta,其中id\u center='$centro'代码>之前echo json\u encode(…)
<?php
include ('mysql.php');
$db = new mysql();
$centro = $_POST['centro']; //this is not getting any data. the whole ajax thing
$consulta = $db->consulta("SELECT * FROM cuenta WHERE id_center = '$centro'");
$output_string=array();
if($db->num_rows($consulta)>0){
while ($resultados1 = $db->fetch_array($consulta)){
$output_string []= 'test text';
}
}
mysql_close();
echo json_encode($output_string);
?>
php://input
$centro = file_get_contents("php://input");
// Depending on how you pass the data you may also need to json_decode($centro)
echo json_encode($centro);
// See if you get back what you pass in
jQuery('#centro_'+i).click( function() {
$.ajax({
data: $("#centro_"+i).closest("form").serialize(),
dataType:"html",
success:function (data, textStatus) {
$('#cuentas').html(data);
alert(data);},
type:"post",
url:"load_cuentas.php"
});
});