2015-05-23 164 views
0

我想在Wordpress上使用jQuery UI Autocomplete,但由于某些原因,它不起作用。jQuery UI自动完成与Wordpress无关

无论如何,我会告诉你我已经:

HTML

<input type="text" name="db-search" id="db-search" autocomplete="off" /> 

的JavaScript

$('#db-search').autocomplete({ 
    source: function (request, response) { 
     $.ajax({ 
     type: "POST", 
     url:"/wp-content/themes/your-click/autocomplete.php", 
     data: { autocomplete: 'true' }, 
    }); 
     } 
    }, { minLength: 1 }); 

PHP(autocomplete.php)

<?php 
    global $wpdb; 
    $string = wpdb::_real_escape($_GET['term']); 
    $get_results = $wpdb->get_results("SELECT * FROM yc_customers WHERE website LIKE $string ORDER BY website ASC"); 

    $json[] = ''; 
    foreach ($get_results as $get_result) { 
     array_push($json, $get_result->website); 
    } 

    echo json_encode($json); 
    flush; 
?> 

我在使用chrome进行测试时没有收到任何错误。所以我不知道我的代码有什么问题,但是我猜,PHP一定有什么问题。

回答

0

更新

php在问题出现在期待 “GET” 请求$_GET['term']?尝试subsituting $string = wpdb::_real_escape($_POST['autocomplete']);$string = wpdb::_real_escape($_GET['term']);

Autocomplete - Remote JSONP datsource - viewsource


.autocomplete()预计response(Array),也出现在data: { autocomplete: 'true' },

被尾随逗号,尝试

$('#db-search').autocomplete({ 
    source: function (request, response) { 
       // input query 
       var term = request.term; 
       $.ajax({ 
       type: "POST", 
       url:"/wp-content/themes/your-click/autocomplete.php", 
       // "POST" `term` to server 
       data: { autocomplete: term } 
       }).then(function(data) { 
       response(data) 
       }, function error(jqxhr, textStatus, errorThrown) { 
       console.log(textStatus, errorThrown) 
       }); 
     } 
    }, 
    minLength: 1 
}); 
+0

谢谢你,现在我得到的错误:未捕获TypeError:不能使用'in'运算符在[“”]中搜索'3'。它告诉我,这个错误来自jquery.min.js。它也是说响应(数据)(在你的代码中)是一个匿名函数。 –

+0

尝试打开'console'点击“网络” - >“响应”。是否从服务器发送响应?数据是从$ .post()返回一个包含空字符串[[“”]'的数组吗? – guest271314

+0

当我点击网络时,没有所谓的“响应”。我正在使用Chrome和Firefox进行测试。只有我看到的是一个帖子已成功发送到autocomplete.php,但它不会返回任何内容。 –