将PHP变量添加到JQuery的Ajax数据中

时间:2014-10-22 01:22:51

标签: php jquery ajax

你可能会说,我在jQuery方面有点业余。因此,如果有更好的方法可以做我想做的事情,请亲切地分享:)这里发生了什么。当您将<?php echo $header_id; ?>替换为兼容的给定ID(例如17)时,脚本中的所有内容都会顺利运行。虽然在此脚本之前定义了$header_id,但它不能真正输出&#39; 17&#39;。

我在此之前做过研究,没有找到任何帮助。

所以我想主要的问题是,在这个实例中添加一个PHP echo是否真的有效,或者我是否需要另一种方法,或者甚至不是问题......

$(".vote-button-disabled").click(function (evt) {
$(this).hide().prev("input[disabled]").prop("disabled", false).focus();

var quizid = "";
console.log(quizid);
$.ajax({ 
    url: "scripts/vote-post.php",
    type: "POST",
    data: {
        'quizid' : '<?php echo $header_id; ?>',
        'upvote' : '1', 
    },
    success: function() {
        console.log('yes!');
    },

error: function( xhr, status, errorThrown ) {
alert( "Sorry, there was a problem!" );
console.log( "Error: " + errorThrown );
console.log( "Status: " + status );
console.dir( xhr );
},
complete: function( xhr, status ) {
alert( "The request is complete!" );
}
});

});

先谢谢!

2 个答案:

答案 0 :(得分:1)

要理解的是,PHP在服务器端执行,JavaScript在客户端执行。

PHP实际上并不知道什么是HTML,什么是JavaScript或什么是纯文本。它只是知道它正在回馈某种内容(也许)。因此,当您回显HTML或JavaScript代码时,就PHP而言,您实际上只是创建一个文本文件。您正在创建一个包含一些文本(恰好是HTML + JS代码)的文件,并将其作为对HTTP请求的响应发送。您的浏览器会在响应中解释生成的文本(恰好是HTML + JS代码)。因此,您可以将PHP视为一种HTML + JS生成器。您可以使用PHP输出HTML + JS(当然还有更多)。

一旦您了解到PHP完全在页面被发回以供浏览器解释HTML和JavaScript时执行,那么使用JavaScript可以做什么和不能做什么的答案变得更加简单。 PHP没有与JS交互,它正在创建JS代码作为文本供浏览器在PHP执行完成后读取。


因此,正如@charlietfl在问题的评论中提到的那样,您应该将quizid添加到按钮上的data-quizid属性(假设您使用的是HTML5),然后获取属性对于单击的特定元素,使用var quizid = $(this).data('quizid');

答案 1 :(得分:0)

如果它是外部来自PHP .js文件,则无法正常工作。 但是,您可以直接在PHP / HTML视图文档中插入JS。

<?php
    // Some PHP processing here, whatever you want
?>
<html>
    <head>
        <script type="text/javascript">
            // Your Javascript here, for example:
            var some_data = '<?php echo $some_variable; ?>';
            // ...
        </script>
    </head>
    <!-- Whatever you want to add -->
</html>