首页 > 解决方案 > Ajax 不会在数据库中输入数据

问题描述

我正在尝试将表单中的数据输入数据库。该表单工作正常,但是当我尝试使用 Ajax 将数据传输到 php 脚本以进行数据库插入时,不会发送 JSON。如果我直接在php脚本中插入一个包含JSON的var,就成功了。所以我知道 JSON 格式正确。表单中的jquery是

    $("#up").click (function(e){
        e.preventDefault()
        theurl="ajaxPHPup.php";
        var formdata = JSON.stringify($("#theForm").serializeArray());
        console.log(formdata);
        $.ajax({
             type: "POST",
             url: theurl,
             data: formdata,

             dataType: "html",
             contentType : "application/json; charset=utf-8",
             success: function(data){
               $('#feedback').html(data);
                   console.log('submitted data:');
                   console.log(data);
             }
        });

    });

php脚本是

<?php
session_start();
error_reporting (E-ALL);
require_once('dbaccess.php');
$getLayout = $fm->getLayout('ajaxtest');
$getFields = $getLayout->listFields();

$formdata = $_POST['formdata'];
//$formdata = '[{"name":"one","value":"11"},{"name":"two","value":"22"},{"name":"three","value":"33"},{"name":"four","value":"44"},{"name":"five","value":"55"}]';
$formdecode = json_decode($formdata, true);
$getdbData = $fm->newFindAllCommand('ajaxtest');
$gotdbData = $getdbData->execute();
if(FileMaker::isError($gotdbData)){
    echo 'ERROR - ' . $gotdbData->getCode() . ' ' . $gotdbData->getMessage();
    exit;
}

$record = $gotdbData->getFirstRecord();
$recID = $record->getRecordID();
//echo 'record id = ' . $recID . '<br>';

$feedback = '';
$change = $fm->newEditCommand('ajaxtest',$recID);
foreach($formdecode as $index){
    $change->setField($index['name'], $index['value']);
    $feedback .=$index['name'] . ' => ' . $index['value'] . '<br>';
}
$change->execute();
if(FileMaker::isError($change)){
    echo 'ERROR - ' . $change->getCode() . ' ' . $change->getMessage();
    exit;
}
echo $feedback;
?>

成功例程返回的反馈是一个空字符串。看起来问题出在函数调用中,但我无法确定它到底是什么。

标签: phpjsonajax

解决方案


推荐阅读