2014-03-25 44 views
0

此問題源自this thread將這個javascript對象從jQuery傳遞給PHP?

我已經按照下面的答案,但有麻煩將對象傳遞到PHP。我認爲這只是一個小問題,但我找不到它。

我的Ajax調用

$('.actResult').click(function() { 
     var result = {}; 
     $('.actResult tr').each(function(){ 
      var $tds = $(this).find('td'); 
      result[$tds.eq(0).html()] = $tds.eq(1).text(); 
     }); 
     console.log(result); 
     $.ajax({ 
      type: 'get', 
      url: 'userpage.php', 
      data: result 
     }); 
     $('.FindResults').dialog("close"); 
    }); 

在userpage.php,我使用的是這樣的:

echo '<div id="data"><pre>', var_dump($_GET), '</pre></div>';

也許我可能需要字符串化或json_decode使用,但this source告訴我,這是不夠的做ajax電話。

輸出給我一個

array(0){ 
} 

這是奇怪的。數組打印到控制檯中,以便正確生成。控制檯還告訴我,ajax已成功執行。我使用$ _GET只是因爲$ _POST已經有很多變量,所以檢查$ _GET來處理這個請求會更容易。

UPDATE:

從下面的評論,如果查詢成功的Ajax調用沒有做任何事情。所以我換了電話:

$.ajax({ 
      type: 'get', 
      url: 'userpage.php', 
      data: result, 
      success: function(){ 
       $('#data').text(data); 
      } 
     }); 

而且PHP

echo '<input type="text" id="data" /><pre>', var_dump($_GET), '</pre>';

我有一個div,而不是一個文本框試了一下。結果仍然是數組(0){}

+0

什麼是不工作? – Maximus2012

+2

@undefined'echo'可以帶多個參數,用逗號分隔。這相當於將它們連接到一個字符串並將它們作爲單個參數傳遞。見http://php.net/echo – IMSoP

+0

我得到一個數組(0){}的結果。是的,我爲回聲做。對於字符串變量,我使用'.' – markovchain

回答

1
$.ajax({ 
    type  : "GET", 
    data  : { result : JSON.stringify(result) }, 
    dataType : "html", 
    url  : "userpage.php", 
    beforeSend : function(){ }, 
    success : function(data){ console.log(data) }, 
    error  : function(jqXHR, textStatus, errorThrown) { } 
}); 

在你的PHP

echo '<div id="data"><pre>'. $_GET["result"] .'</pre></div>'; 
+0

dataType在這裏是html,而不是json。 –

+0

@JoeFrambach感謝並更新爲'html'。 – Sark

+0

它不會像這樣在PHP中打印結果。這次它打印的是NULL而不是空數組。我也嘗試用html替換dataType。它將整個頁面的html代碼打印到控制檯中,並且工作正常。它確實顯示在控制檯上。 – markovchain

1
$.ajax({ 
    type: 'GET', 
    url: 'userpage.php', 
    data: result, 
    dataType : 'json', 
    success: function(data){ 
    console.log(data); 
    }, 
    error: function(jqXHR, textStatus){ 
    console.log(jqXHR); 
    console.log(textStatus); 
    } 
}); 
  • 看看控制檯日誌和檢查問題...

啊另一件事上userpage使用像這樣:

echo json_encode($_GET); 
0

你知道嗎,我要出去的肢體在這裏,和瞎猜。

我想你是在騙我們。

根據你的問題中的這句話:I'm using $_GET just because $_POST already has so many variables

你正在做一個POST,而不是一個GET。爲什麼$ _POST包含任何東西如果您發送GET?

從這個

$.ajax({ 
     type: 'post', 
     url: 'userpage.php', 
     data: result 
    }); 

更改您的AJAX這個

$.ajax({ 
     type: 'get', 
     url: 'userpage.php', 
     data: result 
    }); 
+0

如果這是錯誤,那將是一種解脫,但不幸的是 – markovchain

+0

您能否解釋爲什麼$ _POST中有任何內容? –

+0

頁面基本上有一個大表單,其中結果對象的信息來自此處。 – markovchain