这是我的网络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调用仅在我第一次调用加载页面后才成功?但是第二次成功等等,任何想法会发生什么?
答案 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()
仅用于停止表单的正常发布(页面刷新)(如果有)。