2015-10-07 66 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); 

當我把AJAX JS在my_js.php,該功能不起作用。當我把代碼內聯在php頁面的底部時,它似乎只能工作。

任何建議爲什麼當它放置在「my_js.js」時它不起作用?

謝謝!

+0

我得到了505錯誤。 –

回答

1

你不能使用js文件中的任何php代碼。最簡單的解決方案是讓my_js.js爲my_js.php.Then如果你想在my_js.php中使用你的js代碼,只需使用incluce /包括或需要/ 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

+0

謝謝!這解決了問題,並學到了新的東西! =) –

+0

你的歡迎兄弟:D –

2

你的問題是在$.ajax

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

以下行它的工作原理直列因爲PHP會發現,在你HTML解析<?php ?>標籤,生成正確的url不會解析外部標籤javascript文件因此,您的網址可能最終未經處理,在無效網址上執行ajax,並且服務器會通過505進行投訴。

要檢查是否屬於這種情況,請打開瀏覽器終端並在外部javascript文件中搜索所述網址(如果在chrome中,則在標籤下)。如果它未經處理,那是你的罪魁禍首。

+0

謝謝你的解釋!沒有真正想到php系列! :D –

+0

很高興幫助!我沒有提供解決方案,因爲有很多方法可以解決這個問題。就我個人而言,如果實際在外部JavaScript文件中手動編寫url並不會完成,那麼我會將url輸出到data-attribute中。我不會推薦在php文件中寫入javascript ... – JSelser

+0

嗯,你能告訴我一個你建議的樣本解決方案嗎?謝謝! =)) –