Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX到控制器密码确认_Javascript_Jquery_Ajax_Asp.net Mvc 5 - Fatal编程技术网

Javascript AJAX到控制器密码确认

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

我对AJAX和MVC都比较新,我正在尝试进行确认交互

我试图做的是显示一个框,用户将输入一个值并单击submit,然后框将AJAX POST(我想这就是我应该使用的)发送到控制器并返回true或false。然而,我似乎不知道如何让这种互动发挥作用

如果我运行debug,我可以看到我的值被传递到控制器中,但是它会忽略我的
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.NET
success
变量执行任何操作,您总是重定向到索引。@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
            }
        });