2013-03-25 204 views
0

嗨我想從ajax js文件發佈一個變量到一個php文件。這是我迄今的嘗試。AJAX發佈到php請求問題

 var request = createRequest(); 
     var deletenode = node.id; 
    window.alert("nodeid=" + deletenode); 
     var vars = "deletenode="+deletenode; 
     request.open("POST", "deletenode.php", true); 
     request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
     request.onreadystatechange = function() { 
    handleRequest(request); 
}; 
     request.send("deletenode=" + encodeURIComponent(deletenode)); 

這裏是我的PHP文件

<?php 
print_r($_POST); 
$node = $_POST['deletenode']; 
print "node to be deleted: $node"; 
?> 

沒有在我的PHP文件出現後,什麼都可以的問題。我的ajax請求是完好無損的,也是正確的。謝謝你,這是我的處理要求。

function handleRequest(request) { 
    // we only care for now about when we get to readyState 4 
    // which means the request completed and we have the response back 
    if(request.readyState == 4){ 
     //alert("response: " + request.responseText); // check to see what 
     // we got back just for testing 
     // now get response's TEXT and put into document (specify where) 
     // below we have an html element with the id as timeLoc 
     json= eval ("(" + request.responseText + ")");; 

     //alert ("json="+json); //tests what was recieved 
     //clicking the close button 
     closeButton.onclick = function() { 
      node.setData('alpha', 0, 'end'); 
      node.eachAdjacency(function(adj) { 
       adj.setData('alpha', 0, 'end'); 
       var request = createRequest(); 
       var deletenode = node.id; 
       window.alert("nodeid=" + deletenode); 
       var vars = "deletenode="+deletenode; 
       request.open("POST", "deletenode.php", true); 
       request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
       request.onreadystatechange = function() { 
        handleRequest(request); 
       }; 
       request.send("deletenode=" + encodeURIComponent(deletenode)); 
      });  
     }// end readystate=4 
    }//end handle request 
+0

我強烈建議你使用像jQuery這樣的Javascript框架。它使得跨瀏覽器兼容性問題變得更加容易。 – chrislondon 2013-03-25 02:42:22

+0

檢查您的瀏覽器控制檯並查看發送了哪些數據abd服務器的響應是什麼 – 2013-03-25 03:03:58

+0

格式化代碼後,很容易發現它沒有正確編寫。 – Musa 2013-03-25 03:10:53

回答

0

記住,你必須將數據發送鍵/值對 - request.send("deletenode=" + encodeURIComponent(deletenode));

+0

我已經編輯了你的建議,如上所見,但它仍然無法正常工作。 – user1902588 2013-03-25 02:41:24

+0

@ user1902588顯示你的'handleRequest'函數。 – Musa 2013-03-25 02:44:35

+0

所有這些代碼嵌套在請求中,所以我想在請求中做請求。 – user1902588 2013-03-25 02:46:57

0

我不知道如果這是一個複製/粘貼錯誤,但如果這是你的實際代碼,您似乎丟失一些花括號關閉。並有一個雙重的;;在你的評估線的末尾。這是用額外的大括號整理的代碼,這是否工作?

function handleRequest(request) { 
    if(request.readyState == 4){ 
     json= eval ("(" + request.responseText + ")"); 
     closeButton.onclick = function() { 
      node.setData('alpha', 0, 'end'); 
      node.eachAdjacency(function(adj) { 
       adj.setData('alpha', 0, 'end'); 
       var request = createRequest(); 
       var deletenode = node.id; 
       window.alert("nodeid=" + deletenode); 
       var vars = "deletenode="+deletenode; 
       request.open("POST", "deletenode.php", true); 
       request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
       request.onreadystatechange = function() { 
        handleRequest(request); 
       }; 
       request.send("deletenode=" + encodeURIComponent(deletenode)); 
      }); 
     } 
    } 
} 
+0

啊,@Musa,你把我整理一下! – 2013-03-25 03:15:46

+0

是的,這是一個複製粘貼錯誤。一切都語法正確 – user1902588 2013-03-25 03:44:09

+0

如果您打開Chrome開發工具並轉到[網絡選項卡](https://developers.google.com/chrome-developer-tools/docs/network),您應該能夠看到此請求製作並探索正在發送的數據,它看起來是否正確? – 2013-03-25 05:51:42