在第一个 json 调用工作但第二个 json 调用不工作直到页面刷新
After 1st json call working but 2nd json call not working till page get refresh
您好,我在一个应用程序中工作,我正在使用 json 调用来拒绝请求。
现在,当我要一个接一个地拒绝请求时,我发现一个问题,在单页上,当我拒绝一个请求时,它被拒绝了,但是当我要拒绝第二个请求时,它并没有拒绝那个请求。
如果我需要拒绝第二个请求,在这种情况下,我首先需要刷新该页面,然后在我能够拒绝第二个请求之后。
下面是屏幕截图
我的查看页面代码。
在脚本标签中
function declinestudentrequest() {
var StudentRequestId = document.getElementById('hdstatusstudentrequestid').value;
var StatusId = document.getElementById('hdstatusdecline').value;
$.ajax({
url: '/Account/declinestudentrequest',
type: 'GET', // You can use GET
data: { 'StudentRequestId': StudentRequestId },
dataType: "json",
context: this,
cache: false,
success: function (data) {
if (data == "Success") {
$("#GetStatusMessage_" + StudentRequestId).css({ "display": "block" });
$('#div_p_' + StudentRequestId).text("You have decline for student Response");
$("#GetReqdec_" + StudentRequestId).hide();
}
else { alert('Some Error'); }
},
error: function (request) {
console.log(request);
}
});
}
设计
@if (Convert.ToInt16(item.StatusId) == 1)
{
<div id="GetStatusMessage_@item.StudentRequestId" style="display:none;">
<p id="div_p_@item.StudentRequestId">Waiting for student Response.</p>
</div>
<div id="GetReqdec_@item.StudentRequestId">
@using (Html.BeginForm("TutorDashboard", "AccountController"))
{
@Html.TextAreaFor(model => item.Description, new { @class = "form-control", @placeholder = "Please describe how you can help.", @id = "txtdescription" })
<br />
<span>Hourly rate :</span>
@Html.EditorFor(model => item.Ratedummy, new
{
htmlAttributes = new { @class = "form-control", placeholder = "Price", maxlength = 10, id = "txtrate" }
})
<p class="text-right">
<input type="hidden" id="hdstatusrequest" name="hdstatusrequest" value='2' />
<input type="hidden" id="hdstatusdecline" name="hdstatusdecline" value='3' />
<input type="hidden" id="hdstatusstudentrequestid" name="hdstatusstudentrequestid" value='@item.StudentRequestId' />
<input type="button" onclick="return declinestudentrequest();" class="btn btn-default btn-hire decline_btn" value="Decline" />
</p>
}
</div>
}
我的账户控制器端代码
public ActionResult declinestudentrequest(string StudentRequestId)
{
string result = "";
try
{
if (User.Identity.IsAuthenticated)
{
TutorStudentRequest tsr = new TutorStudentRequest();
tsr.StudentRequestId = Convert.ToInt32(StudentRequestId);
tsr.Rate = 0;
tsr.StatusId = 3;
db.TutorStudentRequests.Add(tsr);
db.SaveChanges();
result = "Success";
}
else
{
return RedirectToAction("Index", "Home");
}
}
catch (Exception ex)
{
result = "Error";
throw ex;
}
return Json(result, JsonRequestBehavior.AllowGet);
}
为什么我的第二个拒绝请求不起作用?
问题已解决,因为存在 id 冲突的问题,所以我尝试了类似的方法。
在查看页面上,我将其更改为
<input type="hidden" id="hdstatusstudentrequestid_@item.StudentRequestId" name="hdstatusstudentrequestid" value='@item.StudentRequestId' />
<input type="button" onclick="return declinestudentrequest('@item.StudentRequestId');" class="btn btn-default btn-hire decline_btn" value="Decline" />
并在脚本中
function declinestudentrequest(id) {
var StudentRequestId = document.getElementById('hdstatusstudentrequestid_'+id).value;
var StatusId = document.getElementById('hdstatusdecline').value;
$.ajax({
url: '/Account/declinestudentrequest',
type: 'GET', // You can use GET
data: { 'StudentRequestId': StudentRequestId },
dataType: "json",
context: this,
cache: false,
success: function (data) {
if (data == "Success") {
$("#GetStatusMessage_" + StudentRequestId).css({ "display": "block" });
$('#div_p_' + StudentRequestId).text("You have decline for student Response");
$("#GetReqdec_" + StudentRequestId).hide();
}
else { alert('Some Error'); }
},
error: function (request) {
console.log(request);
}
});
}
在这里,我在将 studentrequestid 传递为唯一性时创建唯一性
您好,我在一个应用程序中工作,我正在使用 json 调用来拒绝请求。 现在,当我要一个接一个地拒绝请求时,我发现一个问题,在单页上,当我拒绝一个请求时,它被拒绝了,但是当我要拒绝第二个请求时,它并没有拒绝那个请求。
如果我需要拒绝第二个请求,在这种情况下,我首先需要刷新该页面,然后在我能够拒绝第二个请求之后。
下面是屏幕截图
我的查看页面代码。
在脚本标签中
function declinestudentrequest() {
var StudentRequestId = document.getElementById('hdstatusstudentrequestid').value;
var StatusId = document.getElementById('hdstatusdecline').value;
$.ajax({
url: '/Account/declinestudentrequest',
type: 'GET', // You can use GET
data: { 'StudentRequestId': StudentRequestId },
dataType: "json",
context: this,
cache: false,
success: function (data) {
if (data == "Success") {
$("#GetStatusMessage_" + StudentRequestId).css({ "display": "block" });
$('#div_p_' + StudentRequestId).text("You have decline for student Response");
$("#GetReqdec_" + StudentRequestId).hide();
}
else { alert('Some Error'); }
},
error: function (request) {
console.log(request);
}
});
}
设计
@if (Convert.ToInt16(item.StatusId) == 1)
{
<div id="GetStatusMessage_@item.StudentRequestId" style="display:none;">
<p id="div_p_@item.StudentRequestId">Waiting for student Response.</p>
</div>
<div id="GetReqdec_@item.StudentRequestId">
@using (Html.BeginForm("TutorDashboard", "AccountController"))
{
@Html.TextAreaFor(model => item.Description, new { @class = "form-control", @placeholder = "Please describe how you can help.", @id = "txtdescription" })
<br />
<span>Hourly rate :</span>
@Html.EditorFor(model => item.Ratedummy, new
{
htmlAttributes = new { @class = "form-control", placeholder = "Price", maxlength = 10, id = "txtrate" }
})
<p class="text-right">
<input type="hidden" id="hdstatusrequest" name="hdstatusrequest" value='2' />
<input type="hidden" id="hdstatusdecline" name="hdstatusdecline" value='3' />
<input type="hidden" id="hdstatusstudentrequestid" name="hdstatusstudentrequestid" value='@item.StudentRequestId' />
<input type="button" onclick="return declinestudentrequest();" class="btn btn-default btn-hire decline_btn" value="Decline" />
</p>
}
</div>
}
我的账户控制器端代码
public ActionResult declinestudentrequest(string StudentRequestId)
{
string result = "";
try
{
if (User.Identity.IsAuthenticated)
{
TutorStudentRequest tsr = new TutorStudentRequest();
tsr.StudentRequestId = Convert.ToInt32(StudentRequestId);
tsr.Rate = 0;
tsr.StatusId = 3;
db.TutorStudentRequests.Add(tsr);
db.SaveChanges();
result = "Success";
}
else
{
return RedirectToAction("Index", "Home");
}
}
catch (Exception ex)
{
result = "Error";
throw ex;
}
return Json(result, JsonRequestBehavior.AllowGet);
}
为什么我的第二个拒绝请求不起作用?
问题已解决,因为存在 id 冲突的问题,所以我尝试了类似的方法。
在查看页面上,我将其更改为
<input type="hidden" id="hdstatusstudentrequestid_@item.StudentRequestId" name="hdstatusstudentrequestid" value='@item.StudentRequestId' />
<input type="button" onclick="return declinestudentrequest('@item.StudentRequestId');" class="btn btn-default btn-hire decline_btn" value="Decline" />
并在脚本中
function declinestudentrequest(id) {
var StudentRequestId = document.getElementById('hdstatusstudentrequestid_'+id).value;
var StatusId = document.getElementById('hdstatusdecline').value;
$.ajax({
url: '/Account/declinestudentrequest',
type: 'GET', // You can use GET
data: { 'StudentRequestId': StudentRequestId },
dataType: "json",
context: this,
cache: false,
success: function (data) {
if (data == "Success") {
$("#GetStatusMessage_" + StudentRequestId).css({ "display": "block" });
$('#div_p_' + StudentRequestId).text("You have decline for student Response");
$("#GetReqdec_" + StudentRequestId).hide();
}
else { alert('Some Error'); }
},
error: function (request) {
console.log(request);
}
});
}
在这里,我在将 studentrequestid 传递为唯一性时创建唯一性