PHP Post没有提交所有信息?

时间:2015-09-03 08:37:40

标签: php jquery ajax

我有一个表单,用于提交要插入数据库的信息,这部分按预期工作,返回所有数据。

但是我也有一个插入的'test'函数,以确保提供的信息有效并且在插入数据库之前按预期工作,这是通过ajax处理的。函数如下:

function test()
{
    var arr= {};
    $('.arr').each(function(i, obj) {

            arr[obj.name] = $(this).val();
    });
    $("label").html("Started!");
    $.ajax(
        {
            type: "POST",
            url: "test.php",
            data: arr,
            success: function(msg)
                {
                    $(test).html(msg);
                    $("label").html("Finished!");
                }
            });
}

但是,当您print_r $_POST$var时,它不会返回所有字段。它只返回以下内容:

Array ( [a] => aaaaaa [b] => a [c] => \ [d] => \ [e] => \<\/span\> [f] => a )

c,d&amp;所有包含一些需要存储的html代码,但是所有都是空白的,我试图使用向后斜线“逃避”它们,但是如上所示现在只是将'''发布到测试页面,帖子到SQL插入页面正在成功运行,没有任何问题,所以我有点难过为什么它没有正常工作,有没有人有任何想法?

只需编辑所有使用的ajax等:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />   
<link href="../style.css" rel="stylesheet" type="text/css" />

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
<script type='text/javascript' src='jquery.autocomplete.js'></script>
<script>
$(document).ready(function()
{
    $('#name').keyup(username_check);
    createCourse($(".check_dom"))
});

function username_check(){

var username = $('#name').val();

jQuery.ajax(
        {

           type: "POST",
           url: "check_name.php",
           data: 'name='+ username,
           cache: false,
           success: function(response)
            {
            if(response == 1)
                {

                    $('#name').css('border', '3px #C33 solid'); 
                    $('#tick').hide();
                    $('#cross').fadeIn();
                }
            else
                {

                    $('#name').css('border', '3px #090 solid');
                    $('#cross').hide();
                    $('#tick').fadeIn();
                }

            }
        });
}
function createCourse(els)
    {
        els.autocomplete("check.php", 
            {
                width: 260,
                matchContains: true,
                mustMatch: true,
                selectFirst: false
            });

                els.result(function(event, data, formatted)
            {

            });
    };
function test()
    {
        var arr= {};
        $('.name').each(function(i, obj) {

                arr[obj.name] = $(this).val();
        });
        $("label").html("Started!");
        $.ajax(
            {
                type: "POST",
                url: "test.php",
                data: arr,
                success: function(msg)
                    {
                        $(test).html(msg);
                        $("label").html("Finished!");
                    }
                });
    }

</script>

1 个答案:

答案 0 :(得分:0)

为了获得更好的兼容代码, 替换你的代码:

$('.arr').each(function(i, obj) {
    arr[obj.name] = $(this).val();
});

使用:

$('.arr').each(function(i, obj) {
     arr.push({obj.name: $(this).val()==""?$(this).val():$(this).html()});
});

现在回答你真正的问题: 除非你的某些对象不是具有值的类型,否则你可以使用html()检查值是否为空,就像我一样。

但更具体地说,如果它可以正常工作到另一个页面但不仅仅是test.php页面,那么98%的可能性是你的错误是在test.php或你的标题发送。