Ajax не пишет в базу данных - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть 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 голосов
/ 06 ноября 2018

Это не ответ как таковой на данном этапе, но несколько замечаний, которые могут помочь найти ответ:

  • код, отображающий сообщение «Ошибка отправки», фактически находится в разделе ответа об успешном выполнении. Это показывает сообщение, если есть непустая, непустая строка, возвращенная вызовом AJAX. Это помогло бы, если строка была выведена, чтобы помочь отладке, если это фактическая ошибка сохранения данных, или нет
  • Исходя из вышеизложенного, проверьте, были ли предоставленные данные сохранены или нет - это поможет установить, что на самом деле происходит
  • Во второй форме мы можем видеть URL (urlFormUpdateWithNotice), но в первой мы не можем, поэтому трудно сказать, если это проблема (например, может быть опечатка в URL)

В идеале вам нужно включать как можно больше подробностей, включая любые критические данные, чтобы диагностика проблемы была проще и быстрее.

В любом случае, лучшее место для начала - посмотреть, что text находится в success: function (text) {..., и взять его оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...