2015-08-27 46 views
0

我有一個使用$ get()函數檢索PHP變量的腳本,但我對每個變量都有多個請求。我想這樣做是因爲我希望調用是單獨的,而不是等待加載所有變量。將多個AJAX調用與PHP結合使用

這裏是我的簡單的代碼:

的functions.php

$content1 = 'This is a good solution.'; 
$content2 = 'This is another good solution.'; 

if(preg_match('[good]', $content1)) { 

$result1 = "<p>Great, we found something here.</p>"; 

}else{ 

$result1 = "<p>Oops, nooooo.</p>"; 
} 
///////////////////////////////// 

if(preg_match('[another]', $content2)) { 

$result2 = "<p>Great, we found something here.</p>"; 

}else{ 

$result2 = "<p>Oops, nooo.</p>"; 
} 

$action = $_GET['action']; 

switch ($action) { 
case 'result1': 
echo $result1; 
break; 
case 'result2': 
echo $result2; 
break; 
default: 
echo 'Test'; 

} 

GET.PHP

<script type='text/javascript'> 

$.get('functions.php?action=result1', function(data) { 

$('.result1').html(data); 

}); 


$.get('functions.php?action=result2', function(data) { 

$('.result2').html(data); 

}); 

</script> 

<div class="result1"></div> 
<div class="result2"></div> 
<div class="result3"></div> 
<div class="result4"></div> 
........ 

所以,我怎麼能 「結合」 所有的JavaScript調用一個(使用參數,我不知道),所以不需要爲每個變量創建一個調用。

<script type='text/javascript'> 

$.get('functions.php?action=resultvariable', function(data) { 

$('.result_variable...').html(data); 

}); 

</script> 
+0

創建一個變量並使用document.getElementById()。 –

+0

如何做到這一點,你可以告訴我一個示例代碼? –

+0

您是否正試圖將所有$ .get()調用結合起來?或所有$ .get()回調? – Pete

回答

0

你的意思是,這樣的事情?

function ajaxcall(action, div) { 
    $.get('functions.php?action='+ action, function(data) { 

     $(div).html(data); 

    }); 
} 

你會讓你的電話作爲

ajaxcall('result1','.result1'); 
ajaxcall('result2','.result2'); 
ajaxcall('result3','.result3'); 

...等等。

+0

東西喜歡這個:)但沒有使用ajaxcall('result1','。result1');我不能? –

+0

我的意思是我想調用像這樣的ajaxcall(action,div);/應該管用? –

0

試試這個:

// PHP:把變量下到一個數組

$variables = array('result1'=> $result1, 'result2'=> $result2); 
echo json_encode($variables); 

// JS:改變Ajax調用得到一個JSON對象

$.get('functions.php', function(data) { 

$('.result1').html(data.result1); 
$('.result2').html(data.result2); 


}, 'json'); 

希望它可以幫助。

+0

不好意思,但是這個解決方案會使呼叫加載全部不是單獨的。我需要使用我的解決方案。 –

0

使用jQuery deferred將多個異步回調綁定爲一個。

first_ajax = function(){ 
    return $.get("your_url.php", function(){ //blah }); 
} 

second_ajax = function(){ 
    return $.get("your_second_url.php", function(){ //blah }); 
} 

combine_two_ajax = function(){ 
    $.when(first_ajax(), second_ajax()) 
    .done(function(ret_from_first, ret_from_second){ 
      //something to do 
      … 
      } 
} 

調用combine_two_ajax()會在兩個異步任務完成時觸發兩個異步和回調。