我可以在JavaScript中使用ajax吗?我用过,但没有';行不通
我在JavaScript中使用了AJAX,当某个条件为真时,我想发送一些参数并将按钮值从lock设置为unlock。但它不起作用,我的意思是它不适用于AJAX 这是我的代码,它是通过按钮onclick函数调用的:我可以在JavaScript中使用ajax吗?我用过,但没有';行不通,javascript,ajax,Javascript,Ajax,我在JavaScript中使用了AJAX,当某个条件为真时,我想发送一些参数并将按钮值从lock设置为unlock。但它不起作用,我的意思是它不适用于AJAX 这是我的代码,它是通过按钮onclick函数调用的: <script type="text/javascript"> function change() { var elem = document.getElementById("lockId"); var orderid = docum
<script type="text/javascript">
function change() {
var elem = document.getElementById("lockId");
var orderid = document.getElementById("order_no");
if (elem.value == "Lock") {
$.ajax({
type: 'POST',
data: {Lock_Id: 1, Order_No: orderid},
url: '@Url.Action("LockClick","Orders")',
success: function (result) {
elem.value = "Unlock";
}
});
} else if (elem.value == "Unlock") {
$.ajax({
type: 'POST',
data: {Lock_Id: 0, Order_No: orderid},
url: '@Url.Action("LockClick","Orders")',
success: function (result) {
elem.value = "Lock";
}
});
}
}
</script>
函数更改(){
var elem=document.getElementById(“lockId”);
var orderid=document.getElementById(“订单号”);
如果(元素值==“锁定”){
$.ajax({
键入:“POST”,
数据:{Lock_Id:1,Order_No:orderid},
url:'@url.Action(“锁定单击”、“命令”),
成功:功能(结果){
elem.value=“解锁”;
}
});
}否则如果(元素值==“解锁”){
$.ajax({
键入:“POST”,
数据:{Lock_Id:0,Order_No:orderid},
url:'@url.Action(“锁定单击”、“命令”),
成功:功能(结果){
elem.value=“锁定”;
}
});
}
}
非常感谢您的帮助,我可能在某个地方出错。最后可能缺少orderId行
.value
。应该是:
var orderid = document.getElementById("order_no").value;
首先,您需要将本机javascript数据对象转换为JSON。就这样,
data:JSON.stringify({Lock_Id: 1, Order_No: parseInt(orderid)})
您还需要指定AJAX请求的内容类型:
contentType: 'application/json',
js代码中也有以下错误:
var orderid = document.getElementById("order_no")
现在在orderid中,您拥有的是对象,而不是元素的值。我假设orderid上只有简单的html输入字段。在这种情况下,您需要通过以下方式替换字符串:
var orderid = document.getElementById("order_no").value;
您还需要将orderid解析为int,因为它来自.value作为字符串,并且期望控制器方法中的整数
感谢您发布控制器代码。上面有几个小错误。请使用以下字符串进行修复:
public ActionResult LockClick(int Lock_Id, int Order_No, int cust_acctNo = 0, int store_id = 0)
<script type="text/javascript">
function change() {
var elem = document.getElementById("lockId");
var orderid = document.getElementById("order_no").value;
if (elem.value == "Lock") {
$.ajax({
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({ Lock_Id: 1, Order_No: parseInt(orderid) }),
url: '@Url.Action("LockClick","Index")',
success: function (result) {
elem.value = "Unlock";
}
});
} else if (elem.value == "Unlock") {
$.ajax({
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({ Lock_Id: 0, Order_No: parseInt(orderid) }),
url: '@Url.Action("LockClick", "Index")',
success: function (result) {
elem.value = "Lock";
}
});
}
return false;
}
</script>
函数更改(){
var elem=document.getElementById(“lockId”);
var orderid=document.getElementById(“订单号”).value;
如果(元素值==“锁定”){
$.ajax({
键入:“POST”,
contentType:'应用程序/json',
数据:JSON.stringify({Lock_Id:1,Order_No:parseInt(orderid)}),
url:'@url.Action(“锁定单击”、“索引”),
成功:功能(结果){
elem.value=“解锁”;
}
});
}否则如果(元素值==“解锁”){
$.ajax({
键入:“POST”,
contentType:'应用程序/json',
数据:JSON.stringify({Lock_Id:0,Order_No:parseInt(orderid)}),
url:'@url.Action(“锁定单击”、“索引”),
成功:功能(结果){
elem.value=“锁定”;
}
});
}
返回false;
}
问题可能是ajax请求的url
参数:
url:'@url.Action(“锁定单击”、“订单”),
如果查看浏览器的开发工具,在网络选项卡上,请求的实际URL是什么
脚本是否嵌入到某种模板中?模板是否在任何时候被编译并将该字符串转换为实际URL
编辑
如果在if语句的每个分支中放置一个警报,会发生什么?
elem.value
等于什么?(==
)可能有问题,这取决于元素值的类型。@Url.Action(“LockClick”、“Orders”)看起来可疑,看起来像是从动态web解决方案中撕下的,而不是JavaScript。您需要使用的实际URL是什么?是否包含jquery?jquery的重点是在javascript中使用它-它是一个javascript框架。但我从未见过像@Url.Action()这样的东西。奇怪的标题。AJAX中的J代表Javascript,你知道吗?@JeffWatkins:我以前使用过相同的AJAX语法,但在我使用按钮更改功能后,它不会触发,谢谢,@anton norko。你说得对。删除错误答案。亲爱的@Anton Norko,它没有给出任何错误,我在change函数中添加了警报,但只有ajax不起作用,它没有将参数传递给我在URL中提供的所需操作这是controller中的操作:public ActionResult LockClick(int Lock_Id,int order_No,int cust_acctNo,int store_Id=0){Orders Orders=new Orders();Orders.UnLock_Trade_order(1,order_No);return RedirectToAction(null,new RouteValueDictionary)(new{controller=“Orders”,action=“Edit”,订单号=订单号,客户号=客户号,门店号=8};}非常感谢,先生,这很有效,非常感谢。但是先生,我没有什么问题,当我点击锁定按钮时,它最初会按照我的代码更改为解锁,但当页面再次刷新时,它会更改为锁定,我希望在我点击按钮后,按钮的值会永久更改,希望你明白我的问题。@Hamadkhan-你需要存储锁定\在某个地方解锁状态。然后在您的常规操作方法上,您只需读取该状态,然后根据该状态呈现按钮。锁定\解锁状态可以通过模型中的特定字段或TempData[“L”传递给视图