【问题标题】:where is the error in my if statement code?我的 if 语句代码中的错误在哪里?
【发布时间】:2018-04-07 21:22:58
【问题描述】:

我有一个问题,我向一个页面发送了一个请求,当我收到一个字符串的响应时,出现了错误

这是代码请求:

 jQuery.ajax({
     url:'../admin/parsers/check_address.php',
     method:'post',
     data :data,//data that is been requested   
     success:function(data){
         if(data != 'passed'){

             jQuery('#payment-errors').html(data);
         }
         if(data=='passed'){
            alert(data);
         }
     },//this data is which is coming back from response
     error:function(){alert('حدث خطأ ما');},

 });

这是响应的代码:

echo 'passed';

即使响应包含字符串 'passed' 但它不会进入 if 语句

if(data=='passed'){
                alert(data);
             }

那么我的代码中的错误在哪里,提前谢谢你

【问题讨论】:

  • 本题不重复
  • 啊……我的错……我很高兴提出这个问题。 @Ibrahim 你想让这个问题可读吗?
  • @Ibrahim 你检查控制台是否有任何错误?您看到“网络”标签中出现的内容了吗?
  • @Ibrahim 请在edit 提出您的问题,包括您已采取的调试步骤。例如,查看“网络”选项卡以了解对请求的确切响应。
  • 是的,但是......我从响应中得到字符串“通过”,但为什么 if 语句 if(data != 'passed'){ 进入它而不是 if(data=='通过')

标签: javascript jquery ajax request response


【解决方案1】:

很可能在字符串的两端也有一些额外的空格(由于 php 文件中的空格)

尝试修剪响应:

if(data.trim() == 'passed'){

一般来说,对于此类请求,使用 JSON 比使用字符串更容易

【讨论】:

  • 感谢您的帮助...但它不起作用..没有任何多余的空格
  • 你确定吗?是一个常见的问题。 data.length 返回什么?另外发送的内容类型标头是什么?
  • 好吧 86 肯定比“通过”的长度要长得多,即 6。使用 JSON....更干净
  • 是的...但是为什么会发生这种情况???????....然后如何在我的状态下使用 JSON?
  • 不知道为什么没有确切地看到整个响应中的内容或使用的 php 代码。 data.trim().length 返回什么?
【解决方案2】:

您的答案应该是 JSON 对象,而不是字符串。尝试执行以下操作:

在您的 PHP 程序中:

echo json_encode(array('resp' => 'passed'))

在您的 Javascript 代码中:

if(data.resp != 'passed'){
    jQuery('#payment-errors').html(data.resp);
}
    alert(data.resp);
}

顺便说一句,如果不是!=,那么它就是==。你肯定可以像我一样简化你的 else 条件。

【讨论】:

  • 也应该在$.ajax中设置dataType
  • 是的,会很好。但我认为它默认为 JSON。我不确定这一点,所以...安全总比抱歉好。
  • 不,它没有。它根据文档使用 "智能猜测"。如果适当的标头设置服务器端,它会。设置更安全
  • 嘿charlietfl data.trim().length 返回 75
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-09
相关资源
最近更新 更多