2016-05-16 160 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; 
?>