[英]How to pass results from jQuery function to PHP
我有一份调查的下拉选项列表,并使用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。 谢谢你的时间。
您可以使用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
?>
// 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 );
?>
您需要的是AJAX,它是异步JavaScript和XML。 @ marcus-ekwall 在这里给出的答案应该为您指明正确的方向,但是其简短之处在于POST
和GET
是古老的JavaScript前方法(除其他外)导致页面刷新。
常规的Web应用程序使用同步请求向服务器发送信息或从服务器发送信息。 这意味着您填写表格,点击提交,并使用服务器上的新信息将您定向到新页面。 按下提交按钮后,使用AJAX,JavaScript将向服务器发出请求,解释结果并更新当前屏幕。 从最纯粹的意义上讲,用户永远不会知道任何东西都已传输到服务器。
您可能希望先看看他们的PHP和AJAX示例。
你可以试试这个。
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.
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.