我面临的问题是我在调用Ajax时获得了一个未定义的索引变量。 我需要点击提交按钮将“json”数据发布到“update.php”页面。基本上,我需要捕获文本框中的值并将其发送到数据库。
所以,我在提交按钮上创建了一个表单,代码如下:
<form action="update.php" method = "post" class="form-inline">
<input type="submit" class="btn btn-info" id = "saveEdits" disabled = "disabled" onclick = "updateVal()" name="saveEdits" value="Update"/>
/form>
此提交按钮调用UpdateVal函数,该函数捕获页面上显示的文本框上的值,并使用AJAX将其发送到另一个php页面。
updateVal函数如下:
function updateVal() {
var node_list = document.getElementsByTagName('input');
var c = 0;
var fieldName = [];
var fieldText = []
var ID = [];
for (var i = 0; i < node_list.length; i++) {
var node = node_list[i];
if (node.getAttribute('type') == 'text') {
fieldName[c] = node.name;
fieldText[c] = node.value;
ID[c] = node.id;
c++;
}
}
var postData = {
fieldName: fieldName,
fieldText: fieldText,
ID: ID
};
$.ajax({
type: "post",
url: "update.php",
dataType: "json",
data: {'postData' : JSON.stringify(postData)},
contentType: 'application/x-www-form-urlencoded; charset=UTF-8'
});
正在捕获运行时数据,即文本框中的值,并且可以在控制台显示,但是,当我在update.php上发布此数据时,我将捕获json并将更新数据库,我'得到错误:
注意:未定义的索引:在第11行的update.php中
以下是我的update.php
<?php
$json = $_POST["postData"];
$result = json_decode($json);
var_dump($result);?>
答案 0 :(得分:0)
从表单中删除action
属性,因为您根据Javascript / AJAX发送了不需要的数据。
您现在所做的是:您发送数据两次,每updateVal()
发送一次,每次默认提交表单处理一次。
由于表单提交的数据不包含名为postData
的输入,因此您将获得未定义的索引错误。
编辑: 你说你对整个AJAX主题不满意。 Here是一个很好的简单答案,涵盖了基础知识。
EDIT2:
监听服务器的响应,为你的ajax-request添加一个回调:
$.ajax({
type: "post",
url: "update.php",
dataType: "json",
data: {'postData' : postData},
contentType: 'application/x-www-form-urlencoded; charset=UTF-8'
}).done(function (response, textStatus, jqXHR){
// Show an alert on response
alert(response);
});