2013-05-14 80 views
0

我在使用我的應用程序工作時遇到了一些麻煩。 設置相當簡單:1個按鈕,1個功能和1個php文件。從javascript執行php

The structure

的script.js

$(document).ready(function() 
{ 
    $("#btnTestConnectie").click(testConnectie); 
}); 

function testConnectie() 
{ 
    $.get("script/SQL/testConnection.php"); 
} 

testConnection.php

<?php 
echo "It works!"; 
php?> 

根據這篇文章,它應該工作(How do I run PHP code when a user clicks on a link?

一些消息來源聲稱,這是不可能通過javascript執行php,所以我不知道該相信什麼。

如果我錯了,是否有人能指點我一個可行的方法(從javascript/jQuery腳本連接到mySQL數據庫)?

謝謝!

+4

PHP的)上的負載來看看(執行服務器端執行JS/jQuery的客戶端。您可以使用ajax調用php腳本並根據響應執行js。 – 2013-05-14 16:14:45

+0

你的'testConnectie'函數中有什麼?它需要包含一個ajax請求,就像在你發佈的鏈接中使用'$ .get'一樣。 – sgroves 2013-05-14 16:14:47

+1

根據那篇文章?你沒有做任何事情需要的郵件,像鏈接到PHP頁面例如 – 2013-05-14 16:15:03

回答

1
$.get('script/SQL/testConnection.php', function(data) { 
    alert(data) 
}); 

你需要處理Ajax的結果

+2

其實你不必處理結果。如果有效,你可以在控制檯中看到結果。 – 2013-05-14 16:19:47

+0

他不需要。但是,是的,如果除了運行php腳本之外,如果你想做其他事情,處理ajax結果將是一個好主意。 – sgroves 2013-05-14 16:21:05

0

JavaScript是由瀏覽器(客戶端)和PHP運行在遠程服務器上運行,所以你不能僅僅從JS運行PHP代碼。但是,您可以調用服務器爲您運行它,並在不重新加載頁面的情況下返回結果。這種方法被稱爲AJAX - 閱讀它一段時間。

我看到你正在使用jQuery--它對這種調用有相當不錯的API。據記載:here

在你的情況下,JS應該是相當喜歡:

$(document).ready(function() 
{ 
    $("#btnTestConnectie").click($.ajax({ 
     url: '/testConnection.php', 
     success: function(data) { 
      //do something 
     } 
    })); 
}); 

[編輯] 比方說,你有一個供應基於ID數據庫中GET給出的數據在服務器上簡單的腳本(如www.example.com/userInfo.php?id=1)。在最簡單的方法中,服務器將運行userInfo.php腳本,並使用密鑰ID($ _GET ['id'] = 1)傳遞超全局數組$ _GET。在一個正常的調用中,你可以準備一些查詢,渲染一些html並回顯它,以便瀏覽器可以顯示一個新頁面。

在AJAX調用中它幾乎是一樣的:服務器獲取一些調用,運行腳本並返回結果。所有不同之處在於,瀏覽器不會重新加載頁面,而是將此響應傳遞給javascript函數,並讓您隨心所欲地執行任何操作。通常你可能只會發送一個數據編碼(我更喜歡JSON)並在客戶端渲染一些合適的html。

+0

這看起來有用,但我對如何開始沒有任何想法。 有人有關於如何使用Javascript + Ajax連接到MySQL數據庫(使用用戶名/密碼)執行SQL語句的代碼片段嗎? – Matt 2013-05-14 16:34:50

+0

嘗試通過我的編輯 - 應該更容易,我希望。 – Moby04 2013-05-14 17:07:41

+3

一步一個腳印。 1)學習如何使用php連接數據庫,2)學習如何在連接上執行sql語句,3)學習如何使用jquery ajax請求在js和php之間進行交互。一旦你能做到這三件事,你可以把它們放在一起。 – sgroves 2013-05-14 17:10:53

0

你需要對你的php腳本回應的響應做些什麼。

$.get("script/SQL/testConnection.php", function(data){ 
    alert(data); 
}); 

如果您使用的是Firefox的鉻可以調出控制檯,使XHR請求記錄和查看原始頭和響應。

+0

如果所有OP想要做的都是在服務器端運行腳本,則不必處理結果。您可以在瀏覽器的控制檯中看到響應。 – 2013-05-14 16:22:38

+0

這就是我所說的。 – 2013-05-14 16:29:36

0

你應該把你的所有功能,在文件準備處理程序:

$(document).ready(function(){ 
    function testConnectie() { 
     $.get("script/SQL/testConnection.php"); 
    } 

    $("#btnTestConnectie").click(function(e) { 
     e.preventDefault(); 
     testConnectie(); 
    }); 
}); 

你必須有你的瀏覽器的控制檯打開看看結果作爲來自服務器的響應。請確保您在testConnection中將關閉的PHP括號更改爲?>。PHP。

另一個需要注意的是,如果你正在測試AJAX函數,你必須在網絡服務器上測試它們。否則,您可能得不到任何結果,或者結果可能不符合您的預期。