2016-03-02 98 views
1

我有一个调查的下拉选项列表,并计数他​​们的选择使用jQuery。计数代码正常工作并已得到确认。麻烦来了,将变量传递给PHP(从我读过的内容中,我需要使用POST函数,但有麻烦),以便根据调查响应修改用户的元数据。如何将结果从jQuery函数传递到PHP

这里的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

读作AJAX POST' – Rayon

+0

使用jQuery阿贾克斯。你可以参考这个链接http://api.jquery.com/jquery。ajax/ – WisdmLabs

+0

可能重复[如何将JavaScript变量传递给PHP?](http://stackoverflow.com/questions/1917576/how-to-pass-javascript-variables-to-php) – dave

回答

0

可以使用jQuery.ajax

**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 

?> 
0
// update count values summary 
    $('.cnteyes').text(eyes); 

上面的代码应改为

// update count values summary 
    $('.cnteyes').val(eyes); 

文本()函数只是填充所提供的文本,但输入通过POST传递数据而不是价值。但是Val()函数会将输入对象的值设置为提供的值。

另外关于PHP的片断中,$反应,应设置为$ _ 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); 
?> 
+0

我想你正在使用表单发布。否则你可能需要通过ajax发布数据。 –

0

你想要的是AJAX,它是异步JavaScript和XML是什么。 @ marcus-ekwall here的答案应该指向正确的方向,但缺点是POSTGET是古代的JavaScript之前的方法(除其他外)会导致页面刷新。

Tutorials Point introduces AJAX如下:

常规Web应用程序发送信息并从使用同步请求的服务器。这意味着您需要填写表单,点击提交,然后使用服务器提供的新信息定向到新页面。 按下提交按钮后,JavaScript会向服务器发出请求,解释结果并更新当前屏幕。从最纯粹的意义上说,用户永远不会知道任何事情甚至传输到服务器。

你可能想通过看their PHP and AJAX Example.

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. 
}