Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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不读取JSON servlet应答_Javascript_Jquery_Servlets - Fatal编程技术网

Javascript Ajax不读取JSON servlet应答

Javascript Ajax不读取JSON servlet应答,javascript,jquery,servlets,Javascript,Jquery,Servlets,我在用ajax和javascript做噩梦。。。我正在尝试读取JSON答案并重定向到其他站点 我的Javascript应该查询等待过程==login | | loginAlreadyInUse的验证servlet,然后将其重定向到其他位置: <script type="text/javascript"> var userId = "<%=request.getSession().getId()%>"; var timeInterval=self.setInterval("

我在用ajax和javascript做噩梦。。。我正在尝试读取JSON答案并重定向到其他站点

我的Javascript应该查询等待过程==login | | loginAlreadyInUse的验证servlet,然后将其重定向到其他位置:

<script type="text/javascript">
var userId = "<%=request.getSession().getId()%>";
var timeInterval=self.setInterval("check_userId()", 3000);

function check_userId() {
$.post('http://localhost:8080/qrlogin/verify', {userId: userId}, 
    function(data) {
       if(data.procedure == "login") {
             window.location = 'http://localhost:8080/qrlogin/login'+userId;
        }
       else if(data.procedure == 'loginAlreadyInUse') {
            window.location = 'http://localhost:8080/qrlogin/'+userId;
         }
     }, "json");
问题是脚本从未重定向到登录页面。(继续每3秒发布一次帖子…)

谢谢你抽出时间

  • “{'procedure':'login'}”
    。非单引号中的所有键和字符串。因此,您需要
    out.print()
    this:
    “{\”过程\“:\”登录\“}”

  • 不要将字符串传递给
    setInterval
    (或者
    setTimeout
    )。它是伪装的
    eval
    ,我们都知道它是邪恶的(对吧?对吧?)。只需传递函数本身:

    var timeInterval=self.setInterval(check_userId, 3000); // look ma, no quotes
    
  • “{'procedure':'login'}”
    。非单引号中的所有键和字符串。因此,您需要
    out.print()
    this:
    “{\”过程\“:\”登录\“}”

  • 不要将字符串传递给
    setInterval
    (或者
    setTimeout
    )。它是伪装的
    eval
    ,我们都知道它是邪恶的(对吧?对吧?)。只需传递函数本身:

    var timeInterval=self.setInterval(check_userId, 3000); // look ma, no quotes
    

  • 好吧,你是我的英雄。。。错误在引号中。。。非常感谢你!对不起,打扰你了。。。但是,创建JSON对象的正确方法是什么?硬编码字符串被证明是有问题的…您可以使用类似于googlegson()的库gson是好的;我个人喜欢。好吧,你是我的英雄。。。错误在引号中。。。非常感谢你!对不起,打扰你了。。。但是,创建JSON对象的正确方法是什么?硬编码字符串被证明是有问题的…您可以使用类似于googlegson()的库gson是好的;我个人喜欢。