2015-10-07 3 views
1

Итак, я следующий за 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); 

Когда я положил Аякса JS в my_js.php, функция не работает. Кажется, что это работает, когда я помещаю код в строку внизу страницы php.

Любые предложения по тому, почему он не работает, когда он помещен в «my_js.js»?

Спасибо!

+0

У меня ошибка 505. –

ответ

1

Вы не можете использовать какой-либо PHP-код внутри js-файла. Самое простое решение для этого - сделать my_js.js my_js.php.Then, если вы хотите использовать js-код внутри my_js.php, просто используйте incluce/включают в себя или требуют/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

+0

Спасибо! Это решило проблему и узнало что-то новое! =) –

+0

ваш приветственный брат: D –

2

Ваша проблема следующая строка в $.ajax

url: "<?php echo admin_url('admin-ajax.php'); ?>", 

Он работает рядный, потому что PHP будет найти и разобрать <?php ?> тегов в HTML, создавая правильный url но не будет разбирать теги во внешних javascript-файлы, поэтому ваш URL-адрес, вероятно, не обрабатывается, выполняя ajax по недопустимому URL-адресу, а сервер жалуется на 505.

Чтобы проверить, действительно ли это так, откройте терминал браузера и найдите указанный URL-адрес в файле внешнего javascript (под заголовками вкладка, если в хроме). Если он не обрабатывается, это ваш преступник.

+0

Спасибо за объяснение! На самом деле не думал о линии php! : D –

+0

Рад, что помогло! Я не включал решение, потому что есть несколько способов сделать это. Лично я бы выводил url в атрибуте data, если на самом деле писать url вручную во внешнем файле javascript не будет вообще. Я бы не рекомендовал писать javascript в php-файле ... – JSelser

+0

hmm, не могли бы вы показать мне пример решения того, что вы предлагаете? благодаря! =)) –

Смежные вопросы