2012-09-20 52 views
0

我試圖找到答案的地方周圍,但我不能,在綁定事件(XHR)嵌入Ajax請求

所以我有一個.bind()事件,我想,當就會觸發這個做從AJAX的JSON的PHP文件中獲取查詢。

我試圖不工作的情況如下:

$(document).ready(function() { 
$("#adivhere").bind("valuesChanged", function(){ 

          // Some variables here 
var max2 = 10 
var min2 = 5 

          //The classic AJAX Request 
function afunc(max2,min2){ 
var xmlhttp; 
if (window.XMLHttpRequest) 
{ // code for IE7+, Firefox, Chrome, Opera, Safari 
xmlhttp=new XMLHttpRequest(); 
}else { // code for IE6, IE5 
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");} 


          //The classic AJAX onreadystatechange function 
xmlhttp.onreadystatechange=function() 
{ if (xmlhttp.readyState==4 && xmlhttp.status==200){  

         //The code triggered 
var fets = jQuery.parseJSON(xmlhttp.responseText); 
var t = fets.date.split(/[-]/); 
var d = new Date(t[0], t[1], t[2]); 
alert(d); 

}} 

         //The XHR request with the .php file and the 
         // two values that sends 
xmlhttp.open("GET","getdates.php?max2="+max2+"&min2="+min2,true); 
xmlhttp.send(); 
}; 
}); 

回答

1

它看起來像你使用jQuery,所以這應該工作:

$(function(){ 
    $('#adivhere').bind('valuesChanged',function(){ 
     var max2 = 10; 
     var min2 = 5; 

     $.getJSON('getdates.php?callback=?', {max2: max2, min2: min2}, function(json){ 
      alert(json); 

      var t = json.date.split(/[-]/); 

      if (t && t.length) { 
       var d = new Date(t[0], t[1], t[2]); 
       alert(d); 
      } 
     }); 
    }); 
}); 

有已經在jQuery的一個真棒$ .getJSON方法,會做所有這些都爲你帶來沉重負擔,包括將你的結果作爲JSON返回。

您需要使getdates.php腳本回顯callback並將結果包裹在括號中,以便返回爲實際的jQuery。

+0

謝謝。 這應該工作我asume但警報(json);'不會發生。 目前'getdates.php'回聲Json字符串是這個問題嗎? 而上面的代碼給出了:'getdates.php?callback =?max2 = 10&min2 = 5'。我對麼? – Diolor

+1

@ DDL449需要觸發綁定的操作「valuesChanged」。我不認爲'valuesChanged'是一個默認的動作,所以你需要把它改變爲'change'或者實際上用'$('#adivhere')觸發它。trigger('valuesChanged');''當你想要的行動發生時。 – thewebguy

+1

@ DDL449實際上,它應該轉換爲'get dates.php?callback =?&max2 = 10&min2 = 5',其中第二個'?'將被jQuery自動替換爲類似json_callback1283754914的東西。 – thewebguy

1

有在腳本中一些「錯誤」:

  • 「afunc」永遠不會被調用,那麼爲什麼它應該是執行?
  • 括號未正確關閉;在最後有兩人失蹤:)}
+0

謝謝。是的,它錯過了一個})。 所以如果我省略'function afunc(max2,min2){'和相應的右括號會起作用? – Diolor