2012-08-16 25 views
-1

我試圖讓輸入表形式的產品在我的MVC頁面輸入新的記錄,這是查看的代碼(我使用的MongoDB)如何將jQuery值傳遞給PHP代碼?

<?php 
    for ($i = 0; $i <= 1; $i++) { 
    <tr> 
    <td><?php echo CHtml::activeTextField($modelItem, "[$i]name"); ?></td> 
    <td><?php echo CHtml::activeTextArea($modelItem, "[$i]description"); ?></td> 
    <td><?php echo CHtml::activeTextField($modelItem, "[$i]price"); ?></td> 
    </tr> 
<?php } ?> 

因此,使它的擴展輸入形式,我使用:

<script type="text/javascript"> 
$(document).ready(function(){ 
    addNewRow(); 
    function addNewRow() { 
    var i = $("#listItem tbody tr").size(); 
    var arr = {}; 
    $("#listItem tbody tr:last").click(function(){ 
     if($(this).hasClass('addedRow') == false){ 
     arr.i = i; 
     $("#ADD_PRICE_LIST_ROW").tmpl(arr).appendTo("#listItem tbody"); 
     addNewRow(); 
     } 
     $(this).addClass('addedRow') 
    }); 
    } 
}); 
</script> 

(ListItem中TBODY是表的ID) 所以我必須做些什麼來完成以下功能?

<script id="ADD_PRICE_LIST_ROW" type="text/x-jquery-tmpl"> 
    <tr> 
    ???? 
    </tr> 
</script> 

對不起,我英文不好= =

+2

使用Ajax請求 – 2012-08-16 19:43:22

+3

一個PHP腳本無法處理客戶端的變量,除非它已經收到了通過HTTP請求。 ('POST'或'GET')這是否有助於您指出正確的方向? – Matt 2012-08-16 19:43:25

+0

這個問題或其變體每隔一天就會被問到。也許,我錯了,但我想,即使在谷歌上粗略搜索也會給你一個虛擬的解決方案聚寶盆,所有這些解決方案都會告訴你使用AJAX。 – 2012-08-16 20:46:58

回答

1

你需要使用AJAX這個:

$.ajax({ 
    type: 'POST', 
    url: '/your/php.php', 
    data: { 
     post1: $('#element').val(), 
     post2: $('#element2').text() 
    }, 
    success: function(result) { 
     alert(result); 
    }, 
    error: function() { 
     $('#errors').text('Failed to get response from PHP'); 
    } 
}); 

您還可以使用$.post()做同樣的事情,如果你不需要儘可能多的選項:

$.post('/your/php.php', { 
    post1: $('#element').val(), 
    post2: $('#element2').text() 
}, 
function(result) { 
    alert(result); 
}); 

你可以把它們放在裏面,像$('#button').on('click', function() { /* $.ajax() or $.post() */ });$('#textbox1').on('keyup', function() { /* $.ajax() or $.post() */ });

裏面你的PHP,你可以做這樣的事情來處理它像任何其他POST:

if(isset($_POST['post1'])) { 
    // $result = do stuff with $_POST['post1']; 
    echo $result; // The jQuery will grab this as "result" and alert it... 
}