使用Ajax请求执行PHP文件

4

我还在学习Ajax,希望您能耐心等待。我正在尝试使用jQuery的ajax调用从javascript内部运行一个php文件。我不需要获取/提交任何数据,我只想让PHP代码执行并将消息“hello world”记录到控制台中(我打算将其用于具有onclick()函数的按钮中)。唯一被记录的是“success”消息。我希望PHP代码在不离开当前页面的情况下执行,但我认为我可能没有理解AJAX的工作原理。或者也许有更好的方法来实现这一点。感谢您的帮助。

PS:我可以看到资源“ajax.php”正在作为XHR加载,使用Safari的Web开发人员工具。

调用ajax.php的索引文件内容如下:

<script>
$.ajax({
  url : 'action/ajax.php',
  type : 'POST',
  success : function (result) {
    console.log ('success');
  },
  error : function () {
    console.log ('error');
  }
});
</script>

ajax.php的内容是:

<?php
echo '<script>console.log("hello world");</script>';
?>

echo 'hello world'; for php and console.log(result); for javascript. - valar morghulis
基本上你想要实现的是使用ajax打开一个警告。最好运行一些PHP代码,你会在成功部分找到结果。 - Manish Shukla
在ajax成功方法内,result是保存从ajax.php返回的信息的变量。 - bloodyKnuckles
3个回答

8

感谢您主动学习PHP、jQuery和AJAX。

只需做出一些修改,您就可以踏上正确的道路:

Javascript (jQuery):

<script>
   $.ajax({

     url : 'action/ajax.php',
     type : 'POST',
     success : function (result) {
        console.log (result); // Here, you need to use response by PHP file.
     },
     error : function () {
        console.log ('error');
     }

   });
</script>

ajax.php的内容如下:

<?php
    //echo '<script>console.log("hello world");</script>';
    // Change above line to:
    echo "hello world";
?>

当我尝试访问文件时,我遇到了CORS策略阻止的问题。已被CORS策略阻止:跨源请求仅支持协议方案:http、data、chrome。我正在使用绝对路径,而不是相对路径,因为我正在从Fitnesse应用程序调用PHP文件。 - Vrajendra Singh Mandloi

1

您的数据存储在回调函数中

<script>
 $.ajax({
  url : 'action/ajax.php',
type : 'POST',
 success : function (result) {
 //this is where you need to call your data which is result and not success
 console.log (result);
 },
error : function () {
 console.log ('error');
 }
 });
</script>

-1
如果您希望其运行,需要执行返回的 JavaScript。
success : function (result) {
    eval(result); //run the result code
    console.log ('success');
},

ajax.php的内容现在将是:

<?php
   echo 'console.log("hello world")';
?>

但是你需要没有 script 标签的干净的 JS。

你可以直接使用 $.getScript('script.js'),因为已经使用了jQuery,而不是使用eval。 - EJTH
1
@EJTH,虽然它并不完全正确,但这是一个可行的解决方案,Zedd做得很好,加一分给你,伙计。 - valar morghulis
除了他的答案对于这个问题无效之外。而且,eval几乎总是错误的答案。 - EJTH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接