2017-07-03 17 views
0

私はadmin ajaxを使用していますが、動作していません。親切にも、問題を見つけるのを手伝ってください。私はVAR「newPostsForm」を警告する場合はここでjqueryのコードWordPressのAdmin ajaxが機能しない

jQuery(document).ready(function($) { 

    jQuery('#newPostsForm').submit(ajaxSubmit); 

    function ajaxSubmit(){ 

    var newPostsForm = jQuery(this).serialize(); 

    jQuery.ajax({ 
    type:"POST", 
    url: "<?php echo admin_url('admin-ajax.php'); ?>", 
    data: newPostsForm, 
    success:function(data){ 
    jQuery("#feedback").html(data); 
    } 
    }); 

    return false; 
    } 
}): 

あり、それは今AJAXに進んでいるvalues.but掲載示します。ここが私が使用しているものです

<form type="post" action="" id="newPostsForm">  
    <input type="hidden" name="action" value="addPosts"/> 
<!-- input fields --> 
</form> 

ここは私が使用しているワードプレス機能です。この関数は別のファイルです。 HTMLとjavascriptは同じファイルにあります

function addPosts(){ 

echo "<pre>"; 
print_r($_POST); 


die(); 
} 



add_action('wp_ajax_addPosts', 'addPosts'); 
add_action('wp_ajax_nopriv_addPosts', 'addPosts'); // not really needed 
+0

スクリプトはPHPプロセスで実行されていますか? 'echo'コールを変数に入れて、URLが正しいことを確認するよう警告し、変数をjQuery ajax urlオプションに渡してください。 – wmorrell

+0

あなたの指示に従って進行する方法を分かり、コードを教えてください。 –

答えて

0

スクリプトがクライアントに送信される前にPHPで処理されているかどうかを確認してください。これと似たようにコードを変更します。あなたはhttps://mysite.example.orgのような実際のURLを取得する場合

jQuery(document).ready(function($) { 

    jQuery('#newPostsForm').submit(ajaxSubmit); 

    function ajaxSubmit() { 
     var newPostsForm = jQuery(this).serialize(); 
     var url = "<?php echo admin_url('admin-ajax.php'); ?>"; 
     alert("Submitting to URL: " + url); 
     jQuery.ajax({ 
      type:"POST", 
      url: url, 
      data: newPostsForm, 
      success:function(data){ 
       jQuery("#feedback").html(data); 
      }, 
      error: function (xhr, status, err) { 
       alert("Got status " + status + " and error: " + err); 
      } 
     }); 
     return false; 
    } 
}); 

その後、URLが有効な場所に行くことを確認してください。 <?php echo admin_url('admin-ajax.php'); ?>を取得した場合、PHPによってコードが処理されず、有効なURLを使用していないためAJAX呼び出しが失敗します。

+0

私は のようになっています。URL:http://localhost/example/wp-admin/admin-ajax.phpに投稿してください。私はURLが有効であると思う。 –

+0

エラーハンドラ関数を追加して、フォームの処理中にエラーが発生していないかどうかを確認してください。 'admin-ajax.php'がエラーを生成している場合は、エラーが表示されます。さもなければ、私は問題が何であるか分かりません、そして、より多くの情報を必要とします。 – wmorrell

0

問題は、JSコードでAJAX URLにアクセスできないようです。 JSコードがPHPページに書き込まれた場合、コードだけが動作します。 PHPコードはJSファイルに実行できないためです。

今、解決策は、JSファイルをローカライズすることです。コードに従ってください。

wp_localize_script('handle', 'settings', array('ajaxurl' => admin_url('admin-ajax.php'))); 

jsファイルをエンキューした場所の直下に上記のコードを記述してください。 NOW JSファイル内 :

jQuery.ajax({ 
     type:"POST", 
     **url: settings.ajaxurl,** 
     data: newPostsForm, 
     success:function(data){ 
      jQuery("#feedback").html(data); 
     } 
    }); 

は、それはあなたの選択で働くことを願っています。

関連する問題