为什么我的ajax呼叫只是第一次没有工作?但是下一次打电话

时间:2017-08-03 06:22:45

标签: javascript c# jquery ajax asp.net-mvc

这是我的网络API方法:

[HttpPost]
    public ActionResult InsertCompany(Company value)
    {
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri(string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~")));
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            var response = client.PostAsJsonAsync($"{WebConfigurationManager.AppSettings["URL"]}/Company/InsertCompany", value).Result;
            if (response.IsSuccessStatusCode)
            {
                return Json(new { success = true, responseText = "Data berhasil ditambahkan!" }, JsonRequestBehavior.AllowGet);
            }
        }

        return Json(new { success = false, responseText = "Data gagal ditambahkan!" }, JsonRequestBehavior.AllowGet);
    }

这是我的ajax电话:

function PostData() {
$.ajax
({
    url: 'InsertCompany',
    type: 'POST',
    dataType: 'json',
    data: {
        CompanyName: $('#CompanyName').val(),
        JoinDate: GetDateTimeNow()
    },
    success: function (response) {
        if (response !== null && response.success) {
            location.reload();
            alert(response.responseText);
        }
        else {
            alert(response.responseText);
        }
    },
    error: function (response) {
        alert('error: ' + response.responseText);  // 
    }
});
}

这就是我称之为ajax的方式:

$('#btnSubmit').click(function () {
PostData();
});

这是GetDateTimeNow()方法:

function GetDateTimeNow()
{
var date = new Date();
var day = date.getDate();       // yields date
var month = date.getMonth() + 1;    // yields month (add one as 
'.getMonth()' is zero indexed)
var year = date.getFullYear();  // yields year
var hour = date.getHours();     // yields hours 
var minute = date.getMinutes(); // yields minutes
var second = date.getSeconds(); // yields seconds

// After this construct a string with the above results as below
var time = day + "/" + month + "/" + year + " " + hour + ':' + minute + ':' 
+ second; 
return time;
}

这是我的html元素:

<button type="submit" class="btn btn-primary" id="btnSubmit">Submit</button>
<input type="text" class="form-control" id="CompanyName" placeholder="Enter Company Name">

这是第一次调用ajax时的响应:

  

错误:未定义

这是ajax调用的第二个响应等等:

  

数据berhasil ditambahkan!

我的问题是为什么我的ajax调用仅在我第一次调用加载页面后才成功?但是第二次成功等等,任何想法会发生什么?

1 个答案:

答案 0 :(得分:0)

需要进行两项更改: -

1.使用e.preventDefault();: -

$('#btnSubmit').click(function (e) {
   e.preventDefault();PostData();
});

2.检查公司名称是否为空,然后只进行ajax调用: -

function PostData() {
   if($.trim($('#CompanyName').val()) != ''){
   //put your complete ajax call code inside it
   }
}

注意: -

如果在没有检查公司名称有价值的情况下点击提交,会出现问题吗?一个空数据通过ajax调用,你得到了未定义。

当您单击按钮时,

preventDefault()仅用于停止表单的正常发布(页面刷新)(如果有)。