错误:调用Ajax时未定义的索引

时间:2015-10-21 09:37:08

标签: javascript php jquery html ajax

我面临的问题是我在调用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);?>

1 个答案:

答案 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);
});