0

我需要帮助的是成功设置 PHP 变量,以便 #result div 获得一个值(不是 JavaScript .html 的东西,我需要它来设置 PHP 变量)。

如果不使用 PHP 变量设置新的 URL,这可能吗?

换句话说,我可以在不这样做的情况下将 JavaScript 变量发送到 PHP 变量吗:
将 javaScript 变量发送到 php 变量

HTML

<div id="hidden_slidersize"></div>
<script type="text/javascript">
    $(function(){
        if ($('body').width() >= 960) {
            var sizeOfSlider = 500;
            } else {
            var sizeOfSlider = ($('body').width())/2;
            }
        $('#hidden_slidersize').html('<form id="dataform" method="post" name="hiddentrick_form" action="data.php"><fieldset><input id="hiddentrick" name="hiddentrick" type="hidden" value="' + sizeOfSlider + '" /><input class="datasubmit" type="submit" value="senddata" /></fieldset></form>');  

    });
</script>

<div id="result"><?php echo $sizeofslider ?></div>

表单 Javascript

$(document).ready(function() {

$(document).on('submit', 'form#dataform', function () { 

$.ajax({  
  type: 'POST',  
  url: 'data.php',  
  data: $('#dataform').serialize(),
  dataType:'html',  
  success: function(data) {alert(data);},
  error: function(data) {
  //AJAX request not completed
  alert('error');
  }
});  
return false;  

  });
});

表单 php

<?php
if( isset($_POST) ){

    $sizeofslider = $_POST['hiddentrick'];
    echo $sizeofslider;
}
?>

更新

好像我解释的不够清楚。我需要做的是把一个javascript变量变成一个php变量,然后用它计算。

这是之后的计算:

<?php 

$czes = array(
                    'sort_order' => 'desc',
                    'sort_column' => 'post_date',
                    'hierarchical' => 1,
                    'exclude' => '',
                    'include' => '',
                    'meta_key' => '',
                    'meta_value' => '',
                    'authors' => '',
                    'child_of' => 4,
                    'exclude_tree' => '',
                    'number' => '',
                    'offset' => 0,
                    'post_type' => 'page',
                    'post_status' => 'publish'
                    ); 
                    $pages = get_pages($czes); 

                    foreach ($pages as $page) { ?>

        <?php $postmetapic1 = get_post_meta($page->ID, 'pic1', true); ?>
        <?php $postmetapic2 = get_post_meta($page->ID, 'pic2', true); ?>
        <?php $postmetapic3 = get_post_meta($page->ID, 'pic3', true); ?>

        <?php
        $holder_width_first=0;
        if (!empty($postmetapic1)) {$holder_width_first++;}
        if (!empty($postmetapic2)) {$holder_width_first++;}
        if (!empty($postmetapic3)) {$holder_width_first++;}
        $holder_width= $holder_width_first*$sizeofslider;
        ?>

        <div id="s_sli_hol_<?php echo $page->ID ?>" class='slider_holder small_slider_holder' style="width: <?php echo $holder_width ?>px">Here's the img-tags</div>
                    <?php } ?>
4

2 回答 2

0

尝试这个。我找到了解决您问题的方法

将此添加到您的 html 页面

<form id="TheForm" method="post">
<input type="hidden" name="something" id="hi"/>
</form>

我已经更改了一些您的 jquery 代码

$(document).ready(function() {

$(document).on('submit', 'form#dataform', function () { 

$.ajax({  
  type: 'POST',  
  url: 'data.php',  
  data: $('#dataform').serialize(),
  dataType:'html',  
  success: function(data) {
   alert(data);
   document.getElementById("hi").value=data;
},
  error: function(data) {
  //AJAX request not completed
  alert('error');
  }
}).done(function() {
  $("#TheForm").submit();
});  
return false;  

  });
});

然后在你的 div #result

<div id="result"><?php  $sizeofslider= $_POST["something"]; $echo $sizeofslider  ?></div>

希望这会有所帮助,谢谢

于 2013-08-13T17:05:57.600 回答
-1

<form>首先,当您也在使用 AJAX 时,无需使用过时和张贴的表单。所以我删除了所有这些。使它变得简单得多。

接下来,您需要一种方法将值存储在服务器上,并在以后再次访问它。一种方法是使用 PHP 会话($_SESSION 变量)。

请注意,我将您的 PHP 处理器文件的名称更改为your_php_file.php。根据需要更改它,但请确保在所有位置(文件系统、ajax1 和 ajax2)进行更改。

这是一个可以执行您想要的工作的示例。

HTML 和 javascript/jQuery:

<html>
    <head>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

        <script type="text/javascript">
            $(document).ready(function() {

                if ($('body').width() >= 960) {
                    var sizeOfSlider = 500;
                } else {
                    var sizeOfSlider = ($('body').width())/2;
                }

                $.ajax({  
                    type: 'POST',
                    url: 'your_php_file.php',  
                    data: 'hiddentrick=' +sizeOfSlider,
                    dataType:'html',  
                    success: function(data) {alert(data);},
                    error: function(data) {
                        //AJAX request not completed
                        alert('error');
                    }
                });

                $('#mybutt').click(function() {
                    $.ajax({  
                        type: 'POST',
                        url: 'your_php_file.php',  
                        data: 'showss=yes',
                        dataType:'html',  
                        success: function(data) {
                            alert(data);
                            $('#result').html(data);
                        },
                        error: function(data) {
                            //AJAX request not completed
                            alert('error');
                        }
                    });
                });

            }); //END $(document).ready()
        </script>
    </head>
<body>

    <div id="result"><?php echo $sizeofslider ?></div>
    <input type="button" id="mybutt" value="Show PHP var"/>

</body>
</html>

your_php_file.php

<?php
    session_start();

    if( isset($_POST) ){
        if (isset($_POST['showss'])) {
            echo 'Hidden value: ' . $_SESSION['sos'];
        }else{
            $sizeofslider = $_POST['hiddentrick'];
            $_SESSION['sos'] = $sizeofslider;
            echo $sizeofslider;
        }
    }else{
        echo 'No POST data';
    }
于 2013-08-13T16:09:06.987 回答