我有一个调查的下拉选项列表,并使用jquery计算他们的选择。计数代码工作正常并已得到确认。将变量传递给PHP(从我已经阅读的内容,我需要使用POST功能但是遇到了麻烦)以便根据以下内容修改用户的元数据会带来麻烦。调查回复。
这里的jquery /计数代码工作正常:
$('select').change(function() {
// get all selects
var eSelects = $('select.e');
// set values count by type
var eyes = 0;
// for each select increase count
$.each(eSelects, function(i, s) {
// increase count
if($(s).val() == '1') { eyes++; }
});
// update count values summary
$('.cnteyes').text(eyes);
});
这里的PHP不能正常工作(不了解如何使用POST功能,所以不要这样做):
<?php
$response = 'cnteyes';
if ( ! add_user_meta( get_current_user_id(), 'survey', $response, true )) {
update_user_meta ( get_current_user_id(), 'survey', $response );
}
echo get_user_meta( get_current_user_id(), 'survey', true );
?>
任何帮助将不胜感激!我完全陷入困境,不明白如何将jquery传递给PHP。谢谢你的时间。
答案 0 :(得分:0)
您可以使用jQuery.ajax
通过POST传递数据**JS File**
$.ajax({
url: "path/to/php/file.php",
type: "POST",
data: {
'someData': 'someData' //you pass your results here
},
datatype: "json",
success: function (result) {
}
});
**PHP File**
<?php
$someDate = $_POST['someData']; // you access your results here
?>
答案 1 :(得分:0)
// update count values summary
$('.cnteyes').text(eyes);
以上代码应更改为
// update count values summary
$('.cnteyes').val(eyes);
text()函数只使用提供的文本填充输入,但不填充值。但是 Val()函数会将输入对象的值设置为提供的值。
同样在php片段上,$ response应设置为$ _POST ['cnteyes']
<?php
$response = $_POST['cnteyes'];
if ( ! add_user_meta( get_current_user_id(), 'survey', $response, true )) {
update_user_meta ( get_current_user_id(), 'survey', $response );
}
echo get_user_meta( get_current_user_id(), 'survey', true );
?>
答案 2 :(得分:0)
你想要的是AJAX,它是异步JavaScript和XML。 @ marcus-ekwall here的答案应该指向正确的方向,但缺点是POST
和GET
是古老的预JavaScript方法(除其他外)导致页面刷新。
Tutorials Point introduces AJAX如下:
传统的Web应用程序使用同步请求向服务器发送信息和从服务器发送信息。这意味着您填写表单,点击提交,然后从服务器获取包含新信息的新页面。 使用AJAX按下提交时,JavaScript将向服务器发出请求,解释结果并更新当前屏幕。从最纯粹的意义上讲,用户永远不会知道任何东西都被传送到服务器。
您可能需要先查看their PHP and AJAX Example.
答案 3 :(得分:0)
你可以试试这个。
js代码
$('select').change(function() {
// get all selects
var eSelects = $('select.e');
// set values count by type
var eyes = 0;
// for each select increase count
$.each(eSelects, function(i, s) {
// increase count
if($(s).val() == '1') { eyes++; }
});
$.post(
"result.php",
{ eye: eyes },
function(data) {
$('.cnteyes').val(eyes);
}
);
});
<强> result.php 强>
<?php
if( $_REQUEST["eye"] ) {
$response = $_REQUEST['eye'];
//write your code here.
}