php
  • javascript
  • arrays
  • get
  • 2013-01-24 63 views 0 likes 
    0

    可能重複檢索:
    Reference: Why does the PHP code in my Javascript not work?傳遞JavaScript數組值鏈接,並使用PHP

    輸出始終bool(false)即使我已經查了一些複選框,我不知道是什麼是錯的。

    到目前爲止,這裏就是我試過

    這裏是我的代碼:

    enter image description here

    <a onclick="href='wp-content/themes/twentyelevenchild/addmarked.php?asin=<?php echo serialize('+asinValues+')?>'" class="addmarkeditems fancybox.ajax">Save Test 2</a> 
    </form> 
    <div id="results"></div> 
    <script type="text/javascript"> 
        var asinValues = $('input[name=checkboxlist]:checked').map(function(){ 
         return $(this).val(); 
        }).get(); 
    </script> 
    
    我在我的螢火蟲的 addmarked.php

    <?php 
    var_dump(unserialize($_GET['asin'])); 
    ?> 
    

    截圖

    +1

    請仔細閱讀上面鏈接的答案。你不能這樣做,你的php代碼將永遠在任何js之前運行。 – bfavaretto

    +0

    @bfavaretto,謝謝!生病閱讀此.. – GrayFullBuster

    回答

    2

    我做了什麼,你可能會尋找一個快速的工作示例:

    http://jsfiddle.net/ithcy/X3Ecx/2/

    addmarked.php應該能夠使用explode(",", $_GET["asin"])或類似做已檢查了所有的複選框的值的東西。

    +0

    我會試試這個.. – GrayFullBuster

    +0

    無論如何不會工作,你不能用PHP序列化js變量。 – bfavaretto

    +0

    我知道......我誤讀了帖子。我已經刪除了這個答案,並且我太快地刪除了它:) – glomad

    1

    假設您添加缺少的回聲:

    <?php echo serialize('+asinValues+')?> 
    

    這完全不會做你認爲它。你不能像這樣混合使用PHP和JS,因爲PHP首先在服務器上執行,如果它恰好生成JavaScript,則會在生成的客戶端上執行。

    那麼,PHP在這裏做什麼?使用加號和字母串聯字符串:'+asinValues+'。序列化,它看起來像:s:12:"+asinValues+";

    那麼你有什麼作爲HTML/JS是:

    <a onclick="href='wp-content/themes/twentyelevenchild/addmarked.php?asin=s:12:"+asinValues+";'" class="addmarkeditems fancybox.ajax">Save Test 2</a> 
    

    由於沒有對應的JS PHP的反序列化,則需要另一種方式來序列化。 JSON將是一個不錯的主意:

    的JavaScript

    '...?asin=' + JSON.stringify(asinValues) 
    

    PHP

    json_decode($_GET['asin']) 
    
    +0

    謝謝,生病了試試這個... – GrayFullBuster

    相關問題