2016-12-08 37 views
-1

中写入var即使有很多问题与我的问题有关,但我无法找到正确的答案。

在外部的JS我需要一个会话变量(view_mode)的值。它有两个可能的值(“复杂”&“简单”)。我想检查哪个值被设置,并根据结果做更多​​的事情。使用下面的代码,JS提醒正确的值(可以说“复杂”),但有一些空间(如“复杂”)。当涉及到if(...)时,即使我写'if(view ==“complex”)',它也不能使用'view'变量。就像变量'view'不存在或者具有其他值一样,它总是跳入'else'中。

var view = $.ajax({ 
        type: 'GET', 
        async: false, 
        url: 'get_view_mode.php', 
       }).responseText; 
alert(view); 

if(view == "complex"){ 
    //do something 
}else{ 
    //do something else 
} 

很显然,“复杂”写在变量中,否则它将无法提醒正确的文本。但为什么不能以任何其他方式进一步使用它? (是的,我知道阿贾克斯被认为是用于异步使用;))

我感谢您的帮助。谢谢!

+0

根据不同的数据类型,男士在正确使用之前可能需要对其值进行评估或解析。 – Lain

+0

因为'“复杂”'和类似的不等于'“复杂”'。前者有空间,后者则没有。在进行比较之前删除空格,也许用'.trim()'(取决于你需要哪种浏览器支持)。或者使用'indexOf'。谨防大写。 –

+0

@Lain关于你对我提供的JQuery链接的评论:你所引用的段落并不是指由Ajax调用返回的整个对象。它指的是传递给回调函数的XHR包装器对象。 $ .ajax调用返回一个JQuery Deferred作为文档。表明。 –

回答

0

您应该检查你的PHP文件,以确保它没有任何输出,你不要指望(如空格)

但在这种情况下,你可以用if(view.match(/complex/))脱身。

但一般情况下,我建议你<head>是这样的:

<script> 
    window.SESSION = <?php 
     echo json_encode(array(
      "view_mode" => $_SESSION['view_mode'], 
      // add more values here? 
     )); 
    ?> 
</script> 

这样,您就可以与window.SESSION.view_mode直接访问在JS的价值,而无需进行额外的往返到服务器。

+0

谢谢!到目前为止,这似乎是完美的解决方案。反过来也可以这样做吗?更改脚本中的变量? – Maki