2012-08-16 45 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... 
}