Ajax不写入数据库

时间:2018-11-06 15:23:02

标签: javascript html ajax database

我有一个HTML表单,试图从数据库中读取数据并写入数据库。表单的HTML示例如下所示:

<div id="form">
    <div class="container-tabby1">
        <div class="wrap-tabby1">
            <form class="tabby1-form validate-form">
                <span class="tabby1-form-title">
                    New Form
                </span>

                <div class="wrap-inputtabby validate-input bg1" data-validate="Internal Error">
                    <span class="label-inputtabby">Change Request Number</span>
                    <input id="ChangeRequestNo" class="inputtabby" type="text" name="ChangeRequestNo" onload="onLoad" readonly>
                </div>


              <div class="container-contact100-form-btn">
                    <input id="submitRequest" type="button" class="contacttabby-form-btn" value="Submit Request" onclick="SaveChangeRequest()"/>

                </div>

用于将其写入数据库的ajax如下:

function SaveChangeRequest() {
        var o = form.getData();
        var errorMsg = "";

msg = mini.loading("Submit...");
        var jsonform = mini.encode(o);
        debugger;
        $.ajax({
            url: urlCR,
            type: "post",
            data: { CR: jsonCR },
            cache: false,
            success: function (text) {
                debugger;
                if (text != null && text != '') {
                    mini.hideMessageBox(msg);
                    onOk();
                }
                else {
                    jAlert("Submit failed", "Error Message");
                }
            },
            error: function (jqXHR, textStatus, errorThrown) {
                mini.hideMessageBox(msg);
                alert(jqXHR.responseText);
            }
        })

每次我尝试提交到数据库时,都会收到“提交失败”错误消息。我还有另一种如下所示的表格,效果很好:

<div id="form" style="margin-left:5px;margin-right:5px;">
    <table width="100%;" align="center">
        <tr>
            <td width="100px;"><label>Applicant:</label></td>
            <td width="300px;"><input id="ApplicantEmail" name="ApplicantEmail" class="mini-textbox" allowinput="false" style="width: 290px;" /></td>

<td align="center">
                    <input type="button" class="searchsubmit" value="Submit" onclick="SaveForm()" style="width:120px;" />

<script type="text/javascript">
        mini.parse();
        SecurityLog_PageLoad();

        var urlPersonInfo = "data/AjaxSecurityService.aspx?method=Sec_CurUserLoginInfo";
        var urlFormGetItem = "Data/ajaxservice.aspx?method=CSC_Form_GetWholeFormo&FormID=";
        var urlFormUpdateWithNotice = "Data/ajaxService.aspx?method=CSC_Form_UpdateChanges";

        var form = new mini.Form("#form");
        var searchGrid = mini.get("dgSearchResult");
        var applyGrid = mini.get("dgApplyResult")

function SaveForm() {
            var o = form.getData();
            form.validate();
            if (form.isValid() == false) return;
            var errMsg = '';
            if (o.RequestComments == null || o.RequestComments == '')
                errMsg=".Justification is empty.\n";
            if (applyGrid.data.length < 1) 
                errMsg+= ".At least apply one report before you submit.\n";
            if (errMsg != '')
            {
                jAlert(errMsg, "Validate Error");
                return;
            }
$.ajax({
                url: urlFormUpdateWithNotice,
                type: "post",
                data: { dataForm: jsonClaim, dataList: jsonList },
                cache: false,
                success: function (text) {
                    var impactID = mini.decode(text);
                    if (impactID != null && impactID != "") {
                        SecurityLog_Submit('Submit',impactID);
                        CloseWindow("ok");
                    };
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    mini.hideMessageBox(msg);
                    alert(jqXHR.responseText);
                }
            });

</script>

为什么后一种形式起作用而第一种形式不起作用?

1 个答案:

答案 0 :(得分:0)

这不是现阶段的答案,但是一些注意事项可能有助于获得答案:

  • 显示“提交失败”消息的代码实际上位于成功响应部分。如果AJAX调用返回了非空非空字符串,它将显示该消息。如果确实是保存数据失败,则输出该字符串将有助于调试。
  • 根据上述内容,检查提交的数据是否已保存-这将有助于确定实际发生的情况
  • 在第二种形式中,我们可以看到URL(urlFormUpdateWithNotice),但在第一种形式中则看不到,因此很难确定这是否是一个问题(例如,URL中可能有错字)

理想情况下,您需要包含尽可能多的细节,包括任何关键数据,以便更轻松,更快速地诊断问题。

无论如何,最好的起点是查看import pyodbc cnxn = pyodbc.connect('Trusted_Connection=yes', driver = '{ODBC Driver 13 for SQL Server}', server = 'XXXXXX\SQLSERVER', database = 'AdventureWorks2016CTP3') sql = "SELECT Distinct TABLE_NAME FROM information_schema.TABLES" cursor = cnxn.cursor() cursor.execute(sql) print(cursor.fetchall()) 中的文本,然后从那里获取。