让jQuery AJAX在WordPress中工作(GET-1)

时间:2012-07-24 作者:Mark Rummel

我正在尝试了解如何使用jQuery$.ajax() 对于项目。我使用从中学到的知识设置此测试TutsPlus.com. 除了我得到一个-1 已返回。所以我得到了警报Success: -1#test-div1 填充了-1, 而不是Hello Everyone!.

My HTML:

<input type="hidden" name="GreetingAll" id="GreetingAll" value="Hello Everyone!" />  
<input class="btn" type="submit" id="PleasePushMe" />  
<div id="test-div1"></div>

In functions.php:

function add_myjavascript(){  
  wp_enqueue_script( \'ajax-implementation.js\', get_stylesheet_directory_uri() . "/scripts/ajax-implementation.js", array( \'jquery\' ) );  
}  

add_action( \'init\', \'add_myjavascript\' );

function MyAjaxFunction(){  
  //get the data from ajax() call  
   $GreetingAll = $_POST[\'GreetingAll\'];  
   $results = "<h2>".$GreetingAll."</h2>";  
  // Return the String  
   die($results);  
}  
// creating Ajax call for WordPress  
add_action( \'wp_ajax_nopriv_MyAjaxFunction\', \'MyAjaxFunction\' );  
add_action( \'wp_ajax_MyAjaxFunction\', \'MyAjaxFunction\' ); 

ajax-implementation.js:

jQuery(document).ready(function() {  

    var GreetingAll = jQuery("#GreetingAll").val();  

    jQuery("#PleasePushMe").click(function(){ 
      jQuery.ajax({  
            type: \'POST\',  
            url: \'/wp-admin/admin-ajax.php\',  
            data: {  
                action: \'MyAjaxFunction\',  
                GreetingAll: GreetingAll,  
            },  
            success: function(data, textStatus, XMLHttpRequest){  
                alert(\'Success: \' + data);
                jQuery("#test-div1").html(\'\');  
                jQuery("#test-div1").append(data);  
            },  
            error: function(MLHttpRequest, textStatus, errorThrown){  
                alert(errorThrown);  
            }  
        });  
  });

});
我唯一的修改就是改变get_bloginfo(\'template_directory\')get_stylesheet_directory_uri(), 因为我使用的是儿童主题。

你有没有想过我该怎么做?谢谢

3 个回复
SO网友:kaiser

1)添加另一个依赖项:array( \'json2\', \'jquery\' );.

2)深入研究 并了解wp-localize-script() 在法典中。它允许您通过在PHP中设置的javascript变量将数据从PHP发送到javascript(作为wp_localize_script()).

SO网友:jepser

只需在ajax函数的末尾添加(在PHP文件中)die(); 在你回音之后"your output" 它将删除该0。

(如果我发现这个问题太晚了,很抱歉)

SO网友:Domain

在ajax调用中

echo $results;
那就做吧

die();
例如:

echo $results;
die(); 

结束