2010-07-13 60 views
1

即時通訊這個阿賈克斯事情沒有做我告訴它做的事情。Ajax問題,變量沒有發送

在客戶端JS方面,我警告通過請求發送的所有內容,並在PHP端打印出它接收到的所有內容。這兩個變量列表是不一樣的。我不懂爲什麼。

這裏如何,我發送的數據(在後):

xhr.onreadystatechange = response; 
xhr.open("POST", self.url, true); 
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
xhr.setRequestHeader("Content-length", data.length); 
xhr.setRequestHeader("Connection", "close"); 
xhr.send(data); 
if(self.ALERT_SENT_DATA) 
{ 
    alert("sending this to " + self.url + ":\n" + data);   
} 

和警報如下:(一切除了類型零,permissionid和權限)

sending this to workers/permission.php: 
type=save&permissionid=2&permission=1&info=0&users=0&pages=0&menus=0 
&toolmanager=0&contributors=0&currentissue=0&backup=0&features=0&issues=0&ast=0 
&research=0&sports=0&milestones=0&sportslist=0&crusher=0&permission=0&info=0 
&users=0&pages=0&menus=0&toolmanager=0&contributors=0&currentissue=0&backup=0 
&features=0&issues=0&ast=0&research=0&sports=0&milestones=0&sportslist=0&crusher=0 

在PHP方面,我總是可以獲取變量類型和權限ID。這2個總是工作,我不知道爲什麼。除了第一個之外,這兩個沒有什麼特別之處。然而,在所有權限後總是出現零。無論JavaScript告訴我它發送了什麼,PHP上的所有內容都變爲零。

那麼我該如何解決這個問題並找出問題所在?

+0

如何「數據」被設置字符串?我認爲這是沒有得到正確填寫。 – 2010-07-13 22:42:56

+0

這是我複製並粘貼到上面的框中的警報文本,它只能讀取數據的前2個值,而不是其他任何東西 – asdasd 2010-07-13 22:49:14

回答

1
&permission=1&in.....her=0&permission=0 

最後一個勝在$ _ POST,$ _ POST [ '許可']將爲0

您可以阻止它的名稱(&許可[] = 1個&許可[後加入[] ] = 0),這將給你一個數組$ _POST ['權限']與這兩個值而不是一個字符串。

如果你無法控制的命名,你必須手動解析自己的輸入(你可以通過$input = file_get_contents('php://input');

+0

聖潔的廢話你是完全正確的。這就是爲什麼一切都是零的現在我只是想知道爲什麼它發送一切兩次謝謝。 – asdasd 2010-07-13 23:16:14