0

我需要多次调用 ajax 才能写入 linux 中的命名管道。

这是我的代码。

Javascript 和 ajax

var count = 0;
var status = "online";

while(status=="online" && count!=25){

$.ajax({ url: 'http://192.168.5.10/Command.php',
         data: {cmd: 'GORIGHT'},
         type: 'post',
         success: function(data) {
                      console.log(data);
                  }
});

count++;
}

命令.php

if($_POST['cmd']==="GORIGHT"){

$fd = fopen("/tmp/myFIFO","w");
fwrite($fd, "GORIGHT\n");
fclose($fd);
echo "SUCCESS";
}

这是正确的做法吗?或者有更快的方法吗?..这会造成延迟吗?

编辑:更改 ajax 网址。对于那个很抱歉。

4

1 回答 1

1

如果您需要它是同步的,您将需要确保每个调用都在等待前一个调用的完成。像这样的东西应该可以解决问题,未经测试的想法:

var count=0;
var N=25;
loop();

function loop() {
    $.ajax({ url: 'http://192.168.5.10/Command.php',
        data: {cmd: 'GORIGHT'},
        type: 'post',
        success: function(data) {
            console.log(data);
        }
    })
    .done(function(data){
        if (count < N) {
            count++;
            loop();
        }
    });
}

另一个想法(更快)可能是在Command.php中添加一个额外的参数,以允许您指定必须执行预定义操作的次数。你可以有这样的东西:

var N=25;

$.ajax({ url: 'http://192.168.5.10/Command.php',
    data: {cmd: 'GORIGHT', repeat:N},
    type: 'post',
    success: function(data) {
        console.log(data);
    }
});
于 2013-05-22T12:04:21.843 回答