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

时间:2016-03-02 04:19:18

标签: javascript php jquery

我有一个调查的下拉选项列表,并使用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。谢谢你的时间。

4 个答案:

答案 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的答案应该指向正确的方向,但缺点是POSTGET是古老的预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.
}