我有一个表单,用于提交要插入数据库的信息,这部分按预期工作,返回所有数据。
但是我也有一个插入的'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>
答案 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或你的标题发送。