我需要多次调用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++;
}
Command.php
if($_POST['cmd']==="GORIGHT"){
$fd = fopen("/tmp/myFIFO","w");
fwrite($fd, "GORIGHT\n");
fclose($fd);
echo "SUCCESS";
}
这是正确的做法吗?或者有更快的方法吗?这会造成延迟吗?
编辑:更改ajax网址。抱歉。
答案 0 :(得分: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);
}
});