2011-12-29 60 views
0

我遇到了一個奇怪的問題。我需要將數據異步發佈到第三方系統。除了表單末尾的兩個複選框之外,一切正常。不幸的是,我無法訪問系統的數據庫,因此如果在該系統的管理區域顯示任何結果,就可以確定成功/失敗。當通過jQuery將複選框數據傳遞給數據庫時有奇怪

表單和jQuery在PHP中構造。

Have a Representative Call Me: <input id="00N60000002Rtib" name="00N60000002Rtib" type="checkbox" value="1" /><br> 
Send Marketing Material and Updated News: <input id="00N60000002Rtig" name="00N60000002Rtig" type="checkbox" value="1" /><br> 

的數據結構(PHP):

foreach ($values as $key => $val) { 
    if ($key == '00N60000002Rtib' || $key == '00N60000002Rtig') { 
     $data .= "$key : $val, "; 
    } else { 
     $data .= "$key : \"$val\", "; 
    } 
} 

$data = substr($data, 0, -2); // remove trailing comma and space 

和jQuery建設:下面相關領域

<script type="text/javascript"> 
    $(window).load(function() { 
     $.post('http://somesite.com', { <?php echo $data; ?> }); 
    }); 
</script> 

查看HTML源證實,我的帖子$數據被正確構造。

什麼是真的是奇怪的是,一個純粹的HTML表單有相同的字段正確發佈。我很難過。有任何想法嗎?

+1

你爲什麼不只是使用數組和json_encode後打印出來()? – MetalFrog 2011-12-29 18:29:39

+0

立即工作。必須刪除多餘的{}數據。謝謝! – 2011-12-29 18:47:09

回答

0

我遇到了同樣的問題,並發現即使複選框爲空並且似乎未包含在發佈請求中,它們仍然被我的服務器標記爲「已檢查」(並因此被插入到數據庫中)。確保這些值不是空的,以避免使用複選框提交ajax提交的任何奇怪。

這將取消設置鍵後空值:

foreach($_POST as $k=>$v) { if(empty($v)) unset($_POST[$k]); }