Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用ajax发送和检索值的问题_Php_Jquery_Ajax - Fatal编程技术网

Php 使用ajax发送和检索值的问题

Php 使用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

这是我的预览问题的一个更清晰的代码,其思想是使用ajax发送和检索一个值,但是该值没有被发送,ajax似乎也不起作用。我更新了这段代码,因为这样它可以很容易地在任何机器上测试。第一次使用ajax。代码如下:

Javascript

<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"

        });
});