如果我在页面执行期间调用此命令,效果很好
exec('run.exe -something', $response, $status);
但是我在页面上有一个按钮,可以通过AJAX执行相同的命令:
// Attempt a call to change the password
$.ajax({
url: 'actions/runcommand.php',
type: 'POST',
data: {
cid: cid,
},
dataType: 'json',
success: function(msg)
{
if (ajaxErr(msg) return;
// Show success message
showMsg('success!');
},
error: function(jqXHR, textStatus, errorThrown){ajaxFail(jqXHR, textStatus, errorThrown)}
});
无论我是在代码中还是通过AJAX进行验证,我都已经验证了这两个命令实际上在执行相同的字符串,但是AJAX发起的操作正在返回错误代码而不是起作用。 status的值是1,这是一个一般性错误,因此我没什么可继续的。
我环顾四周,发现了一个类似的帖子,但是他们通过从ajax命令中删除https解决了它。如果我这样做,浏览器会用可怕的消息阻止它。
此文件在尝试HTTPS的本地计算机上运行,但由于它是自签名证书或其他原因而失败。我关闭了该网站的https重定向,但这没有什么区别。不确定对什么感到不满意...请帮助!
答案 0 :(得分:0)
if (ajaxErr(msg) return;
不应在成功回调函数中进行错误处理。您可以删除它或修改此功能的作用。
如果要从其他目录请求URL,请确保URL参数在根目录中使用斜杠:
url: '/actions/runcommand.php',
尝试一下,看看是否仍然存在一般错误:
$.ajax({
url: '/actions/runcommand.php',
type: 'POST',
data: {
cid: cid,
},
dataType: 'json',
success: function(data, status) {
console.log(data);
console.log(status);
showMsg('success!');
},
error: function(jqXHR, textStatus, errorThrown) {
ajaxFail(jqXHR, textStatus, errorThrown)
}
});
答案 1 :(得分:0)
好吧,这一切都有严重错误的迹象,事实就是如此。我将其留给后代,是因为这是一个容易犯的错误,而且我看到其他人也提出了类似的问题,但都没有很好的答案。
解决方案是我的AJAX文件位于SUBDIRECTORY中,这意味着当它们执行命令时,试图导出到根目录的子目录的输出正试图在ANOTHER SUBDIR中找到该子目录。嘘!