繁体   English   中英

如何将结果从jQuery函数传递到PHP

[英]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 在这里给出的答案应该为您指明正确的方向,但是其简短之处在于POSTGET是古老的JavaScript前方法(除其他外)导致页面刷新。

Tutorials Point对AJAX的介绍如下:

常规的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM