2016-05-16 123 views
1

我目前正在尝试通过示例学习Ajax的基础知识。通过遵循一个基本的教程中,我已经成功地创建了以下脚本:为什么我的基本Ajax脚本不能正常工作?

<!DOCYTPE html> 
<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"> 
$(function(){ 
    $('#mybtn').on('click', function(e){ 
    e.preventDefault(); 
    $('#mybtn').fadeOut(300); 

    $.ajax({ 
     url: 'ajax-script.php', 
     type: 'post', 
    }); // end ajax call 
    }); 
</script> 
</head> 

<body> 
    <a href='#' id='mybtn'>click me</a> 
</body> 

</html> 

使用名为Ajax的script.php的一个简单的PHP文件,其中包含下面的代码组合:

<?php 

if($_POST) { 
    echo "<p>ok</p>"; 
} 

?> 

任何人都可以确定我可能做错了什么?我该如何做这项工作?

+0

什么是不工作?你期望发生什么/试图实现什么? – Marcus

回答

1

你没有成功的功能 - 这就是将回显的PHP数据将被接收。

此外,您还需要关闭加载jQuery库的script标签,并使用不同的脚本标记来描绘的JavaScript代码。

试试这个:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 
<script> 
    $(function(){ 
     $('#mybtn').on('click', function(e){ 
     e.preventDefault(); 
     $('#mybtn').fadeOut(300); 

     $.ajax({ 
      url: 'ajax-script.php', 
      type: 'post', 
      success: function(d){ 
       alert(d); 
      } 
     }); // end ajax call 
    }); 
</script> 

此外,您if ($_POST)可能导致问题 - 要么删除,或发布一些数据:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 
<script> 
    $(function(){ 
     $('#mybtn').on('click', function(e){ 
     e.preventDefault(); 
     $('#mybtn').fadeOut(300); 

     $.ajax({ 
      url: 'ajax-script.php', 
      type: 'post', 
      data: 'test=Hello', 
      success: function(d){ 
       alert(d); 
      } 
     }); // end ajax call 
    }); 
</script> 

然后,你可以让你的PHP来呼应你发送,因此:

<?php 
    if($_POST) { 
     $recd = $_POST['test']; 
     echo 'PHP side received: ' . $recd; 
    } 
?> 
+0

感谢您的回复。奇怪的是,似乎也没有工作。我已将您发布的第二个JS代码复制并粘贴到标题为ajax.php的文件中,并使用您提供的内容更新了php文件。然后我将它上传到我的服务器(在这里:www.theshitpit.com/beta/ajax.php)。任何想法,为什么这可能还没有工作? –

+1

@JohnSmith我添加了一个响应作为一个单独的“答案”*(以防止第一个答案变得太大)*此外,你可能会从[**这篇文章中的例子**]中找到一些有用的信息(http:// stackoverflow.com/questions/17973386/ajax-request-callback-using-jquery/17974843#17974843) – gibberish

0

为了防止第一个答案变得过于单一,我会回应你的在这个新的答案评论。

有几件事情尝试:你ajax.php文件的

(1)位置 - 它是在同一个文件夹中使用JavaScript代码的页面?

(2)ajax.php文件的名称 - 请注意,在你的代码是ajax-script.php

(3)我添加的按钮点击后一个警告 - 这样做上来?

(4)我删除了中频条件 - ajax.php文件会回应一些回到javascript success函数,无论如何。

(5)确保jQuery的工作,我添加jQuery代码上色的背景。如果背景不稍微有点乱,jQuery没有加载。

这是否解决了吗?

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 
<script> 
    $(function(){ 
     $('body').css('background','wheat'); 
     $('#mybtn').on('click', function(e){ 
     alert('Button clicked'); //<========================== 
     e.preventDefault(); 
     $('#mybtn').fadeOut(300); 

     $.ajax({ 
      url: 'ajax.php', 
      type: 'post', 
      data: 'test=Hello', 
      success: function(d){ 
       alert(d); 
      } 
     }); // end ajax call 
    }); 
</script> 

然后,你可以让你的PHP来呼应你发送的内容,即:

<?php 
    $recd = $_POST['test']; 
    echo 'PHP side received: ' . $recd; 
?>