【问题标题】:PHP code inside jquery not workingjquery中的PHP代码不起作用
【发布时间】:2015-04-01 07:03:10
【问题描述】:

//我的jquery

$(document).ready(function() {
    var form = $('#form1'); // contact form
    var submit = $('#submit1'); // submit button
    var alert = $('.alert1'); // alert div for show alert message

// form submit event
form.on('submit', function(e) {
    e.preventDefault(); // prevent default form submit
    // sending ajax request through jQuery
    $.ajax({
        url: 'giftcard_check.php', // form action url
        type: 'POST', // form submit method get/post
        dataType: 'html', // request type html/json/xml
        data: form.serialize(), // serialize form data 
        beforeSend: function() {
            alert.fadeOut();
            submit.html('Checking....'); // change submit button text
        },
        success: function(data) {
            alert.html(data).fadeIn(); // fade in response data
            form.trigger('reset'); // reset form
            submit.html('Apply'); // reset submit button text
            var $container = $("#result1");
            var refreshId = setInterval(function()
            {
                $container.load("result.php?code=<?php echo $variable; ?>");
            }, 500);
        },
        error: function(e) {
            console.log(e)
        }
    });
});
});

在 jquery 中使用 php 代码时,上面的代码不起作用。如果我不使用 php 代码,它的工作正常。但我想将会话变量发送到另一个页面(result.php)。我该如何解决这个问题。有什么方法吗。

【问题讨论】:

  • 会话变量已在所有页面上可用只需在每个页面上启动会话。
  • @SunilPachlangia :- 如果不是会话变量。再次查看我编辑的问题。

标签: javascript php jquery echo


【解决方案1】:

使用下面的代码。将 php 会话分配给 javascript 变量。确保此代码位于 PHP 文件中。 php 在 .js 文件中不起作用

  var sessionID = "<?php echo $_SESSION['id']; ?>";  
 $(document).ready(function() {
   var form = $('#form1'); // contact form
   var submit = $('#submit1'); // submit button
   var alert = $('.alert1'); // alert div for show alert message

   form.on('submit', function(e) {
     e.preventDefault(); // prevent default form submit
// sending ajax request through jQuery
     $.ajax({
      url: 'giftcard_check.php', // form action url
      type: 'POST', // form submit method get/post
      dataType: 'html', // request type html/json/xml
      data: form.serialize(), // serialize form data 
      beforeSend: function() {
        alert.fadeOut();
        submit.html('Checking....'); // change submit button text
      },
      success: function(data) {
        alert.html(data).fadeIn(); // fade in response data
        form.trigger('reset'); // reset form
        submit.html('Apply'); // reset submit button text
        var $container = $("#result1");
        var refreshId = setInterval(function()
        {
            $container.load("result.php?code="+sessionID);
        }, 500);
      },
      error: function(e) {
        console.log(e)
      }
   });
  });
});

【讨论】:

  • 应该使用var sessionId = &lt;?php echo json_encode($_SESSION['id']); ?&gt;;
  • 有两个原因:1. 自动类型声明(带" 的字符串,不带int,带[] 等的数组) 2. 用于自动转义
【解决方案2】:

换个角度看

你可以在你的 html 上做这样的事情:

<form>
<input type="submit" id="f_the_world" data-session-id="<?php echo $variable; ?>"/>
</form>

然后在你的 JS 上

$(document).ready(function() {
    var form = $('#form1'); // contact form
    var submit = $('#submit1'); // submit button
    var alert = $('.alert1'); // alert div for show alert message

// form submit event
form.on('submit', function(e) {
    e.preventDefault(); // prevent default form submit
    // sending ajax request through jQuery
    $.ajax({
        url: 'giftcard_check.php', // form action url
        type: 'POST', // form submit method get/post
        dataType: 'html', // request type html/json/xml
        data: form.serialize(), // serialize form data 
        beforeSend: function() {
            alert.fadeOut();
            submit.html('Checking....'); // change submit button text
        },
        success: function(data) {
            alert.html(data).fadeIn(); // fade in response data
            form.trigger('reset'); // reset form
            submit.html('Apply'); // reset submit button text
            var $container = $("#result1");
            var refreshId = setInterval(function()
            {
                var code = $('#f_the_world').attr('data-session-id');
                $container.load("result.php?code=".code);
            }, 500);
        },
        error: function(e) {
            console.log(e)
        }
    });
});
});

在客户端脚本上看到服务器脚本感觉不对

【讨论】:

  • 当您将输入用作隐藏时,为什么要为属性赋值?您可以将数据分配给值
  • 如果他想把它放在一个按钮里怎么办?,我这样做是为了获得更多信息,我知道 OP 知道他可以把它放在价值上,这是常识
  • 那么,我可以改变我的例子
【解决方案3】:

为什么要将会话 ID 发送到下一页...存储会话值 在服务器中。您可以从任何页面访问会话值。

【讨论】:

    【解决方案4】:

    我们可以通过添加 session_start(); 在 result.php 中轻松获取 session 变量;在 result.php 的开头。这样我们就可以访问创建的会话变量。

    【讨论】:

      【解决方案5】:

      第一步: 在您编写的 jQuery 代码页面中,只需启动会话变量 $_SESSION['id']。

      第二步: 在你的 result.php 页面中,写 session_start();一开始。然后只需调用 $_SESSION['id']。

      希望这会有所帮助:-)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-05
        • 1970-01-01
        相关资源
        最近更新 更多