在 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
函数来确保所有双引号都是来自response
的deleted
。
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 条件不起作用的主要内容,如果未能解决你的问题,请参考以下文章