试图打印$ _POST不起作用

时间:2013-04-21 16:42:55

标签: php jquery ajax

我正在尝试打印任何文本字段的值。我正在使用AJAX,jQuery和PHP,但代码不起作用。它没有在div id='pinta'内显示,它是空的。

JavaScript的:

$('#Enviar0').click(function() {
            var input1 =$('#primero input').serialize();
            $.ajax({ 
                   type:"POST",
                   url:"pintaParte.php",
                   data:input1,                   
                   success: function(data) {
                            $("#pinta").html(data);
                   }
            });         
});

PHP:

<?php
if(isset($_POST['input1'])){
   foreach ($_POST['input1'] as $key => $value) {
        echo "<p>".$key."</p>";
        echo "<p>".$value."</p>";
        echo "<hr />";
   }
} 
?>

4 个答案:

答案 0 :(得分:1)

由于您没有明确指定post变量的名称,因此它不会存在于服务器端。

您的数据元素应该如下所示:

data: {"input1": input1}

答案 1 :(得分:1)

尝试使用JSON:

$('#Enviar0').click(function()
{
    var input1 = $('#primero input').serialize();
    $.ajax({ 
    type: "POST",
    url: "pintaParte.php",
    data: {"input1": input1}            
    success: function(data)
    {
        var key;
        var value;
        var string = '';
        // You have to parse the json array.
        for(var i = 0; i < data.length ; i++)
        {
            key = data[i].key;
            value = data[i].value;
            string += "<p>"+key+"</p>";
            string += "<p>"+value+"</p>";
        }
        $("#pinta").html(string);
    });         
});

其中pintaParte.php如下所示:

<?php
    $input1 = isset($_POST['input1']) ? $_POST['input1'] : array();

    if(sizeof($input1) == 0)
    {
        $json[] = array();
    }
    else
    {
        foreach ($input1 as $key => $value)
        {
            $json[] = array('key' => $key, 'value' => $value);
        }
    }
    echo json_encode($json);
    flush();
?>

答案 2 :(得分:0)

问题是,要读取命名对象属性,您需要将其设置为JavaScript对象中的键值 - 此时您只是传递一个字符串。

试试这个:

$('#Enviar0').click(function() {
    var input1 =$('#primero input').serialize();
    $.ajax({ 
        type:"POST",
        url:"pintaParte.php",
        data: {
            input1: input1
        },                   
        success: function(data) {
            $("#pinta").html(data);
        }
    });         
});

您会发现使用基于浏览器的AJAX资源管理器非常有助于调试这些问题。 Chrome和Safari内置了一个,Firefox有Firebug插件。这些将允许您实时观看操作,包括实际发送的GET / POST参数。

答案 3 :(得分:0)

从foreach循环中删除密钥:

<?php
if(isset($_POST['input1'])){
   foreach ($_POST as $key => $value) {
        echo "<p>".$key."</p>";
        echo "<p>".$value."</p>";
        echo "<hr />";
   }
} 
?>