0

我正在尝试打印任何文本字段的值。我正在使用 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

4 回答 4

1

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

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

data: {"input1": input1}

于 2013-04-21T16:47:57.967 回答
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();
?>
于 2013-04-21T17:04:15.193 回答
0

从 foreach 循环中删除密钥:

<?php
if(isset($_POST['input1'])){
   foreach ($_POST as $key => $value) {
        echo "<p>".$key."</p>";
        echo "<p>".$value."</p>";
        echo "<hr />";
   }
} 
?>
于 2013-04-21T16:57:29.147 回答
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 参数。

于 2013-04-21T16:45:41.373 回答