所以,我关注ajax:
//Ajax
jQuery(document).ready(function() {
jQuery('.my_popup_contact_open').click(function(e) {
e.preventDefault();
jQuery.ajax({
type: "GET",
url: "<?php echo admin_url('admin-ajax.php'); ?>",
dataType: 'html',
data: ({ action: 'rh_contact_form_support'}),
success: function(data){
jQuery('.rhm_contact_support').html(data);
},
error: function(data)
{
alert("Error!");
return false;
}
});
});
});
对于我的my_js.js
文件,我有以下设置:
//header script:
(function ($, root, undefined) {
$(function () {
'use strict';
//js goes here
// Default line End
});
})(jQuery, this);
当我将ajax js放在my_js.php
中时,该函数不起作用。当我将代码内联到php页面的底部时,它似乎才有效。
任何关于为什么它放在&#34; my_js.js&#34;
后无效的建议谢谢!
答案 0 :(得分:2)
您的问题是$.ajax
url: "<?php echo admin_url('admin-ajax.php'); ?>",
它可以内联工作,因为php会查找并解析<?php ?>
中的HTML
标记,生成正确的url
但在外部javascript中解析标记文件,因此您的网址可能最终未经处理,在无效网址上执行ajax,服务器以505
投诉。
要检查是否是这种情况,请打开浏览器终端并在外部javascript文件中搜索所述网址(如果是Chrome,则在来源标签下)。如果它未经处理,那就是你的罪魁祸首。
答案 1 :(得分:1)
你不能在js文件中使用任何php代码。最简单的解决方案就是让你的my_js.js到my_js.php。然后如果你想在my_js.php中使用你的js代码,只需使用incluce / include或者在php中要求/ require_once .. 例如:
my_js.php
(function ($, root, undefined) {
$(function () {
'use strict';
//js goes here
//Ajax
jQuery(document).ready(function() {
jQuery('.my_popup_contact_open').click(function(e) {
e.preventDefault();
jQuery.ajax({
type: "GET",
url: "<?php echo admin_url('admin-ajax.php'); ?>",
dataType: 'html',
data: ({ action: 'rh_contact_form_support'}),
success: function(data){
jQuery('.rhm_contact_support').html(data);
},
error: function(data)
{
alert("Error!");
return false;
}
});
});
});
// Default line End
});
})(jQuery, this);
index.php(示例php文件)
<!DOCTYPE html>
<html>
<head>
<title></title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script><?php require_once('my_js.php ');?></script>
</head>
<body>
</body>
</html>
我希望能帮到你。 :d