2015-02-08 15 views
0

我有js函數通過ajax調用php函數。如何從ajax不參數的PHP函數?

$("#history").click(function(){ 
    $.ajax({ 
     url: "./function.php", 
     type: "POST", 
     data: {"displayBookingHistory"}, 
     dataType: "JSON", 
     success: function(data) { 
      console.log("hellosdasdasds"); 
      $("#universalLogin").append(data); 
     } 
    }); 
}) 

和PHP函數是

function displayBookingHistory() { 
    $html = " "; 
    .... 
    echo json_encode($html); 
} 

和呼叫似乎並不成功,甚至當我嘗試data: "displayBookingHistory",

任何人都知道解決辦法?

+0

嘗試 「返回json_encode($ HTML);」而不是「echo json_encode($ html);」。您提交的數據不是PHP中的函數,而是您可以在PHP腳本中使用的數據。要調用該函數,您必須向URL添加其他信息。 – stefan 2015-02-08 11:32:59

回答

1

jQuery的AJAX方法需要與鍵的對象:值對(或字符串),用於數據字段中。

像昆廷說,你不能從AJAX調用PHP函數,只能完成頁面。如果你想溝通「運行此功能」,你將不得不使用$ _ POST數據是這樣的:

$("#history").click(function(){ 
    $.ajax({ 
     url: "./function.php", 
     type: "POST", 
     data: {function:"displayBookingHistory"}, 
     dataType: "JSON", 
     success: function(data) { 
      console.log("hellosdasdasds"); 
      $("#universalLogin").append(data); 
     } 
    }); 
}) 

然後在你的PHP頁面:

if(isset($_POST["function"]){ 
    $function = $_POST["function"]; 
    if($function=="displayBookingHistory"){ 
     displayBookingHistory(); 
    } 
} 
+0

只學習關鍵:價值對概念。非常感謝你 – Jimmy 2015-02-08 11:59:27

2
  1. 您的JavaScript語法錯誤:對象需要由一系列property:value對組成。
  2. 您不能使用Ajax調用PHP 函數。只有一個URL。您需要編寫您的PHP,以便在您打到該URL時調用該函數。
  3. 你完全忽略了你的PHP中的$_POST,所以沒有理由對你發送給它的數據做任何事情。
0

你是如何調用該函數的? 也許你應該有一個switch語句來檢查數據並調用該函數。 像這樣

if(isset($_POST[data]){ 
switch($_POST[data]){ 
case "displayBookingHistory" : 
    displayBookingHistory(); 
break; 
} 
} 
0

您有語法錯誤AJAX發送數據。

數據:{ 「屬性:值」}或數據:{ 「屬性:值」, 「屬性:值」,...}

問題可以通過兩種方式來解決:

$ ("# history"). click (function() { 
    $ .ajax ({ 
     url: "/function.php?action=displayBookingHistory", 
     type: "POST", 
     dataType: "JSON", 
     success: function (data) { 
      console.log ("hellosdasdasds"); 
      $ ("# universalLogin"). append (data); 

      return false; //for disable a tag (link) click; 
     } 
    }); 
}) 

「action」是一個用於$ _GET類型來檢查php代碼的參數。

或者

$ ("# history"). click (function() { 
    $ .ajax ({ 
     url: "/function.php", 
     type: "POST", 
     data: {"action":"displayBookingHistory"}, 
     dataType: "JSON", 
     success: function (data) { 
      console.log ("hellosdasdasds"); 
      $ ("# universalLogin"). append (data); 

      return false; //for disable a tag (link) click; 
     } 
    }); 
}) 

「行動」 是用於_POST $類型檢查PHP代碼的參數。

最好的方法是讀取標籤href屬性,以便在javascript中禁用。

標籤:

<a href="/function.php?action=displayBookingHistory" id="history">linke</a> 

的javascript:

$ ("# history"). click (function() { 
    $ .ajax ({ 
     url: $(this).attr("href"), 
     type: "POST", 
     dataType: "JSON", 
     success: function (data) { 
      console.log ("hellosdasdasds"); 
      $ ("# universalLogin"). append (data); 

      return false; //for disable a tag (link) click; 
     } 
    }); 
}) 

PHP代碼:

$action = isset($_GET["action"]) ? $_GET["action"] : ""; 

    if($action == 'displayBookingHistory') 
     displayBookingHistory();