wordpress插件jquery ajax调用函数不起作用

时间:2017-05-21 13:54:15

标签: javascript php jquery ajax wordpress

JQuery代码:

jQuery("#dmhsc-form").on("submit", function () {
    var form = this;

    if (jQuery("input[name='url']", form).val() == "") {

        jQuery("div[id='results']", form).html('<div class="not-available">Please, Enter site address.</div>');
        return false;
    }

    var url = jQuery("input[name='url']", form).val();

    jQuery("div[id='results']", form).css('display', 'none');
    jQuery("div[id='results']", form).html('');
    jQuery("div[id='loading']", form).css('display', 'inline');

    var data = {
        'action': 'dmhsc_show',
        'url': url,
        'security': badnc_ajax.dmhsc_nonce
    };

    jQuery.post(badnc_ajax.ajaxurl, data, function (response) {
        var x = JSON.parse(response);
        if (x.status >= 0) {
            display = x.text;
        } else {
            display = "Error occured." + x;
        }
        jQuery("div[id='results']", form).css('display', 'block');
        jQuery("div[id='loading']", form).css('display', 'none');
        jQuery("div[id='results']", form).html(unescape(display));

    });
    return false;
});

插件文件

function badnc_load_styles() {

wp_enqueue_script( 'badnc-script', plugins_url( 'script.js', __FILE__ ), array('jquery')); // script.js contains jquery code

wp_localize_script( 'badnc-script', 'badnc_ajax', array(
    'ajaxurl'       => admin_url( 'admin-ajax.php' ),
    'dmhsc_nonce'     => wp_create_nonce( 'dmhsc_nonce' ))
);
}
add_action( 'wp_loaded', 'badnc_load_styles' );
add_action( 'admin_enqueue_scripts', 'badnc_load_styles' );

function dmhsc_show() {

check_ajax_referer( 'dmhsc_nonce', 'security' );

if(isset($_POST['url']))
{
   $url = sanitize_text_field($_POST['url']);

    if(!$url || !is_string($url) || ! preg_match('/^(https?:\/\/)?(www\.)?\w+\.[a-z]{2,6}(\/)?$/i', $url)) {

      $result = array('status'=>0,'url'=>$url, 'text'=> '<div class="not-available">Please, Enter valid domain name.</div>');
      echo json_encode($result);

   } else {

/*$result = array('status'=>0, 'text'=> '<div class="not-available">Domain: '.$url.'</div>');  
echo json_encode($result);*/  //It display the message without calling to fucntion 

        check_https($url); //function call
   }    

}

die();
}

add_action('wp_ajax_dmhsc_show','dmhsc_show');
add_action('wp_ajax_nopriv_dmhsc_show','dmhsc_show');

function check_https($host) {

    $result = array('status'=>0, 'text'=> '<div class="not-available">Domain: '.$host.'</div>');
echo json_encode($result);
}

问题 我想在提交表单时显示“域名:域名”。表单包含url字段和提交按钮。 但我不知道它没有显示用check_https()函数写的消息。

我在控制台中也遇到错误:

Uncaught SyntaxError: Unexpected token { in JSON at position 74
at JSON.parse (<anonymous>)

如果我在没有调用函数check_https()的情况下显示消息,它就可以工作。

应该是什么问题。

0 个答案:

没有答案