2013-05-02 156 views
3

我想AJAX將某些POST數據發送到PHP頁面,但數據未被正確發送。我究竟做錯了什麼?AJAX沒有正確發送數據

這裏是我的代碼:

HTML

<a id="some_id">LINK</a> 

的Ajax功能

mFunction(){  
    $("#some_id").click(function(){ 
     var thisId = $(this).attr('id'); 
     console.log(thisId); 
     $.ajax({ 
     type : 'POST', 
     url : 'magic.php', 
     data: {"thisId" : thisId}, 
     dataType: "json", 
     success:function(data){ 
     console.log(data); 
     } 
    });  
    }); 
} 

PHP

<?php$thatId = $_POST['thisId']; print_r($_POST); ?>

所以一切都應該按照我的理解工作,但有些事情是錯誤的。 在執行console.log(數據),我得到的ID,這樣的數據已經發送 但print_r的我得到()空數組的數組..

+0

而PHP部分是在哪裏? – dbf 2013-05-02 09:13:24

+0

'<?php $ thatId = $ _POST ['thisId'];的print_r($ _ POST); ?> – Froxz 2013-05-02 09:15:25

+0

你確定'P'是['variables_order'](http://www.php.net/manual/en/ini.core.php#ini.variables-order)的一部分嗎? – 2013-05-02 09:20:13

回答

4

你有dataType: "json",所以你的阿賈克斯呼籲期待json迴應,這就是爲什麼你沒有看到任何迴應。

使用json_encode();

echo json_encode($_POST); 
+0

我不認爲這是問題;我相信OP在說'$ _POST'是空的。 – 2013-05-02 09:18:58

+0

@Jack我知道,但你可以看到OP使用類型POST和發佈數據正確,所以這可能導致...如果還有其他東西讓我知道,所以我可以糾正它.. – 2013-05-02 09:20:27

+0

使用'json_encode();' 我得到[]再次空虛... – Froxz 2013-05-02 09:21:27

1

magic.php

echo json_encode($_POST); 
0

我覺得這行:

data: {"thisId" : thisId}, 

應該

data: {thisId : thisId}, 
+1

這兩種表示法都很好。 – 2013-05-02 09:25:44

+0

@Jack'dataType'是您期望從服務器返回的數據類型,但'data'只能包含普通對象或字符串,我錯了嗎? – egig 2013-05-02 09:36:06

+0

是的,對象或字符串。在這種情況下,它是一個對象;對象文字中的屬性名稱可以引用(JSON標準)或不引用。 – 2013-05-02 09:40:50

0

magic.php

echo json_encode($_POST); 

中將Html.HTML

mFunction(){  
    $("#some_id").click(function(){ 
    var thisId = $(this).attr('id'); 
    console.log(thisId); 
    $.ajax({ 
    type : 'POST', 
    url : 'magic.php', 
    data: {thisId: thisId}, 
    dataType: "json", 
    success:function(data){ 
    console.log(data); 
    } 
    });  
    }); 
} 
1

如果$_POST是空的,這似乎是在這裏的情況下,你應該看看你的配置文件,尤其是variables_order設置。

例如,如果是variables_order設置爲"SP"那麼PHP將創建超全局變量$ _SERVER和$ _ POST,但不能創建$ _ENV,$ _GET,和$ _COOKIE。設置爲「」意味着不會設置超全球植物。

確保"P"是這樣設置的一部分,即

variables_order = "GPCS" 

重新啓動進行此更改後的服務器。

+0

讓我們試試。謝謝 – Froxz 2013-05-02 09:33:47

+0

不能這樣做.. '成功:功能(數據){ console.log(data); (((( – Froxz 2013-05-02 09:46:38

+0

@Froxz)你說你看到了空數組;另外,你在問題中發佈的PHP代碼doesn' t似乎實際上首先給出了這個結果 – 2013-05-02 09:54:30

0

當你請求到服務器必須參數爲對象,

數據:

{thisId: "abc"}

不是:

{"thisId": "abc"}

爲什麼不把一個不同的名稱在這種情況下thisId var?

var thisId = $(this).attr('id');

var tId = $(this).attr('id');

,並使用它:

$.ajax({ 
    type : 'POST', 
    url : 'magic.php', 
    data: {thisId: tId}, 
    dataType: "json", 
    success:function(data){ 
    console.log(data); 
    } 
    }); 

它與傳遞給關鍵崗位的對象的名稱一致,我不知道它可以被複制或不,但我不選擇相同的名稱。

+0

{thisId:thisId}可以被使用。 – 2013-05-12 11:00:13