我正在尝试使用AJAX发布数据并将其插入数据库表中。
问题是,一半的数据丢失了,我不知道为什么。我检查了所有参数的名称等,因为它似乎在某处出现错字(我丢失了一些字符,但我已将其修复),但仍然无法正常工作。
即使console.log()和警报也提供了我要发布的完整数据,但是它从未到达,因此php输出空参数。停用JavaScript或删除“返回false”时; php脚本已按预期打开,并且运行良好,没有数据丢失(按预期)。
也许我真的只是在某个地方缺少一个字符...
我也尝试转义(escape())字符串,但没有任何改变。
这是代码和一些日志/警报/回声$("#itemspeichern").click(function(){
setVisible("#item-process");
var itemname = escape($("#itemname").val());
if ($("#itemneu").is(":checked")) {
var itemneu = $("#itemneu").val();
} else {
var itemneu = 0;
}
var itembild = escape($("#itembild").val());
var itemkurzb = escape($("#itemkurzb").val());
var theset = escape($("#theset").val());
console.log("itemname=" + itemname + "&itemneu=" + itemneu + "&itembild=" + itembild + "&itemkurzb=" + itemkurzb + "&theset=" + theset);
$.ajax({
url: "<?php actualPath(); ?>save-admin-action.php",
type: "POST",
data: "itemname=" + itemname + "&itemneu=" + itemneu + "&itembild" + itembild + "&itemkurzb" + itemkurzb + "&theset=" + theset,
success: function(result){
alert("itemname=" + itemname + "&itemneu=" + itemneu + "&itembild=" + itembild + "&itemkurzb=" + itemkurzb + "&theset=" + theset);
document.getElementById("item-process").innerHTML = result;
}
});
return false;
});
这是什么:
-在控制台上输出所有字段的数据
-显示警报中的所有数据
但是保存完成后,数据库缺少itembild和itemkurzb的值。从php文件获取查询作为响应表明,对于这些字段,参数确实为空。这是我在php中所做的(我将其缩短了一点,不要对SQL注入和内容发表评论:P)
$ergebnis = mysql_query("INSERT INTO mk7_items(id, de, neu, kurzbeschreibung, bild) VALUES(DEFAULT, '".$_POST["itemname"]."', ".$_POST["itemneu"].", '".$_POST["itemkurzb"]."', '".$_POST["itembild"]."')");
当我收到响应时,最后两个字段为空,并且没有任何内容保存到数据库中。
如我所说,将JS设置为OFF并在php上运行只能很好地工作。
有任何想法吗?我在那里做过任何愚蠢的错误?
最佳答案
您在=中缺少一对data,应该是这样的:data: "itemname=" + itemname + "&itemneu=" + itemneu + "&itembild=" + itembild + "&itemkurzb=" + itemkurzb + "&theset=" + theset,
或者更好的是,停止使用escape(由于encodeURIComponent不能很好地处理非ASCII数据,因此不赞成使用escape或使用data),并为$.ajax参数使用一个对象:
var itemname = $("#itemname").val();
//...
$.ajax({
url: "<?php actualPath(); ?>save-admin-action.php",
type: "POST",
data: {
itemname: itemname,
itemneu: itemneu,
itembild: itembild,
itemkurzb: itemkurzb,
theset: theset
},
//...
});
这样,将负责将您的数据转换为正确的POST(或GET或...)格式,而您不必担心细节。
关于ajax - jQuery AJAX发布数据丢失,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/7947592/