在 Ajax 响应中,我的 if 条件不起作用

Posted

技术标签:

【中文标题】在 Ajax 响应中,我的 if 条件不起作用【英文标题】:In Ajax response my if condition is not working 【发布时间】:2020-12-25 00:09:59 【问题描述】:

检查下面的jquery 代码。在此处理后请求 response 返回 no_file_found 但如果条件不满足且未达到 alert()。我在这里做错了什么?

$("#btnFoo").on("click", function () 
            var file_data = $('#formUploadImg').prop('files')[0];
            var form_data = new FormData();
            form_data.append('file', file_data);
            form_data.append('ProId', $(this).attr("img-upload-product-id"));
            $.ajax(
                url: '/mycontroller/upload',
                dataType: 'text',
                cache: false,
                contentType: false,
                processData: false,
                data: form_data,
                type: 'post',
                success: function (response) 
                    console.log(typeof response);//it returns string
                    if (response == "no_file_found") 
                        alert("this not hits");//this alert not hits
                    
                    
                ,
                error: function (response) 
                    alert("Error");
                
            );
        );

请注意我正在使用 c# mvc5 并且响应来自 mvc5 控制器。 Mvc5 示例如下:

[HttpPost]
public JsonResult upload()

    return Json("no_file_found");

【问题讨论】:

检查 console.log(response, response == "no_file_found")... 这个日志记录“no_file_found”是真的吗? 它显示:"no_file_found" false 以及为什么它是错误的任何提示? 【参考方案1】:

您需要使用.trim() 函数来确保从response 中删除所有unseen spaces,以便能够与match 精确比较==no_file_found .

编辑: not 工作的原因是因为您返回 "no_file_found" 并添加了双引号 ""。但是在前端,您只需检查no_file_found - 您需要使用replace 函数来确保所有双引号都是来自responsedeleted

var response = '"no_file_found"';
if (response.replace(/["']/g, "").trim() == "no_file_found") 
  alert("this hits"); //this alert hits
 

【讨论】:

虽然好兄弟,但事实并非如此。奇怪的 @DillGates 你确定你从 ajax 得到这个响应为no_file_found - 你可以通过点击 F12 检查网络控制台,看看实际 ajax 调用的响应中会出现什么 ibb.co/LhVvx8c 在这里查看我已附上浏览器开发工具中网络选项卡的屏幕截图【参考方案2】:

这里的问题是您正在返回一个 Json 值 - 但您的 ajax 设置为具有 dataType: 'text'。

如果你改变 dataType: 'json' 一切都会像预期的那样工作。

【讨论】:

以上是关于在 Ajax 响应中,我的 if 条件不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress AJAX 不起作用 - 响应 0

当查询中存在 IF 条件时,CTE 不起作用

在颤振中添加if条件后,列表视图卡不起作用

Ajax 在 JQuery 表单插件中不起作用

带有 Ajax + 数据表的 CRUD 表不起作用

条件渲染在 vuejs v-if 中不起作用