今天在做一个自动补全的功能。别人已经做好了,新的需求是:如果用户输入的名称不合法(相对于网站的数据库里面的数据),则让其不能提交。
这倒不是一个大事,如果我做的话,我的思路是这样的。拿到用户的数据,去跟数据库匹配,根据返回结果处理 。前端代码:
var user_input_city_name = $("#city_name").val(); $.ajax({ url:'x/y.php', dataType:'json', data:{ cityName:user_input_city_name }, success:function(data) {...} error:function() {...} });
服务器只是去数据库里面走一圈,然后返回结果。可是问题来了,说的数据库没有在机器上,而是在线上服务器。那就只能去线上取了,可是都知道js是不能跨域请求的。怎么办呢。一个同事说起了,用jsonp。瞬间想起来,前段时间看过。 然后找了一下,大概是这样的:
$.ajax({ type: 'get', url: 'x/y', dataType: 'jsonp', jsonp: "callback", callback: "callback", data: "q=" + user_input_city_name, async: false, success: function (data) { .... }, error: function (data) { console.log("error"); } }); });
这里说下,我问了下同事,callback函数可以随便写如果有success的话。因为服务器那边会给你生成的。不管怎样,找到了一个能够跨域访问的方法了。