Javascript AJAX到控制器密码确认
我对AJAX和MVC都比较新,我正在尝试进行确认交互 我试图做的是显示一个框,用户将输入一个值并单击submit,然后框将AJAX POST(我想这就是我应该使用的)发送到控制器并返回true或false。然而,我似乎不知道如何让这种互动发挥作用 如果我运行debug,我可以看到我的值被传递到控制器中,但是它会忽略我的Javascript AJAX到控制器密码确认,javascript,jquery,ajax,asp.net-mvc-5,Javascript,Jquery,Ajax,Asp.net Mvc 5,我对AJAX和MVC都比较新,我正在尝试进行确认交互 我试图做的是显示一个框,用户将输入一个值并单击submit,然后框将AJAX POST(我想这就是我应该使用的)发送到控制器并返回true或false。然而,我似乎不知道如何让这种互动发挥作用 如果我运行debug,我可以看到我的值被传递到控制器中,但是它会忽略我的If语句来检查字符串是否正确。除此之外,我不知道如何返回真/假并在AJAX中处理它 这是我迄今为止的“最佳猜测” AJAX/JS <script type="text/jav
If
语句来检查字符串是否正确。除此之外,我不知道如何返回真/假并在AJAX中处理它
这是我迄今为止的“最佳猜测”
AJAX/JS
<script type="text/javascript">
function preloadFunc() {
var prompting = prompt("Please enter your password", "****");
if (prompting != null && prompting != null) {
$.ajax({
url: '/Admin/magicCheck',
type: 'POST',
data: {
'magic': prompting
},
success: function () {
//let page load
},
error: function () {
preloadFunc(); //re-ask
}
});
}
else {
window.location.replace("google.com"); //Pressing Cancel
}
}
window.onpaint = preloadFunc();
</script>
非常感谢所有的帮助,因为我是新手 阅读你帖子下面的所有评论,因为这里有很多问题,但关于提交和返回: 将控制器更改为返回JSON,如下所示:
[HttpPost]
public ActionResult magicCheck(string magic)
{
bool success = false;
if (magic == "poof")
{
success = true;
}
else
{
success = false;
}
return Json( new { Success = success });
}
现在控制器返回JSON,您需要更改js来处理它:
$.ajax({
url: '/Admin/magicCheck',
type: 'POST',
data: 'magic=' + prompting, //<-- you didn't need to send JSON for this, you'd have to change your controller if you are going to send a JSON object also... you just need this for now
success: function (resp) {
//let page load
if ( resp.Success ){
// success...
}
else{
//fail
}
},
error: function () {
preloadFunc(); //re-ask
}
});
$.ajax({
url:“/Admin/magicCheck”,
键入:“POST”,
数据:“magic=”+提示,//第一个问题-window.onpaint=prelofunc();
应该是window.onpaint=prelofunc;
。onpaint
属性需要一个函数引用……您正在立即执行函数并分配其结果(未定义),如果(提示!=null和&提示!=null){
for?提示
将永远不会是null
-它将永远是一个字符串(空或非空)。您从未使用ASP.NETsuccess
变量执行任何操作,您总是重定向到索引。@Ian!=null
是处理“取消”的简单方法被按下。@Austin不敢相信我忘记了,我不确定我在想什么。不过,为什么会出现两次这种情况?AJAX响应中的服务器重定向不会“在发布后撤销js中的任何内容”…这看起来像是一个成功的响应,但响应将包含重定向页面的HTML,这显然不是desiredok,将得到纠正…我从未在通过ajax调用时进行过重定向,但您的说法很有道理,因为处理是由程序员完成的。是的,我也从未对ajax响应进行重定向(因为这毫无意义),我只知道这种行为是不可取的。浏览器在将响应返回给JavaScript@TMcKeown这非常好!我想我终于开始理解JSON在AJAX中的关系和作用了。是的,我只是在等le timer
$.ajax({
url: '/Admin/magicCheck',
type: 'POST',
data: 'magic=' + prompting, //<-- you didn't need to send JSON for this, you'd have to change your controller if you are going to send a JSON object also... you just need this for now
success: function (resp) {
//let page load
if ( resp.Success ){
// success...
}
else{
//fail
}
},
error: function () {
preloadFunc(); //re-ask
}
});