ajax表单只能内联工作

时间:2015-10-07 01:38:58

标签: jquery ajax

所以,我关注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;

后无效的建议

谢谢!

2 个答案:

答案 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