2014-03-04 102 views
0

我有5個函數的php腳本。該腳本將獲取「request_type」「USER_ID」和「YOUTUBE_ID」和執行功能(五之一)適用於「request_type」使用json函數返回對象的Javascript函數

每個函數返回我JSON。

現在在客戶端我有這個javascript函數。我希望它儘可能通用,這意味着我希望它從php獲取數據並將其作爲對象返回。

function request_to_server(f_request_type, f_user_id, f_youtube_id) { 
          var my_answer; 
          $.ajax({ 
           type : "POST", 
           dataType : "json", 
           url : "http://example.com/youtube_save.php", 
           data : {request_type: f_request_type, user_id : f_user_id, youtube_id:f_youtube_id }, 
           success: function(response) { 

            my_answer = JSON.parse(response); 

           } 
          }); 
          return my_answer; 
         } 

這裏是得到這個對象

function show_button_or_not() { 

          var user_id = $('#hold_user_id').val(); 
          var answer = request_to_server('show_button','89',"lala"); 

          if(answer.success) { 
           alert("yes"); 
          } else { 
           alert("no"); 
          } 


         } 

另一個函數的例子,但正如我所說的,在PHP可以返回不同種類的JSON的。它可以有(可選)response.success,response.book,response.author。

任何人都可以解釋如何做到這一點?

+0

可能重複[如何從AJAX調用返回響應?](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) – Ian

+0

@lan我會嘗試在那裏找到答案,謝謝 –

+0

Ajax本質上是異步的,這意味着在返回結果之前服務器請求並不完整,因此在返回之前不會調用成功函數。創建ajax請求時,必須設置「async:false」,以便等待服務器響應。一個更好的選擇是創建一個回調函數。 –

回答

0

在服務器端,在PHP中,request_type添加到JSON響應,以便您的客戶端AJAX回調將收到已啓動AJAX擺在首位的request_type。

所有你需要做的經過是這樣評價request_type(帶開關的情況下也許)並執行這種情況下,(request_type)採取必要的行動。

不過說實話,我不會試圖讓AJAX請求和回調「通用」,並具有1個URL指向5個PHP函數它不是一個Web API的最佳實踐。