• 关于 Ajax的jquery实现($.post()) 的搜索结果

回答

jquery ui 有一个autocomplete的插件,可以实现这个功能 在后台传一个 json格式的数组数据过来。JS如下: $(function() { var cache = {}; function split( val ) { return val.split( /,\s*/ ); } function extractLast( term ) { return split( term ).pop(); } $( "#tags" ) // don't navigate away from the field on tab when selecting an item .bind( "keydown", function( event ) { if ( event.keyCode === $.ui.keyCode.TAB && $( this ).data( "ui-autocomplete" ).menu.active ) { event.preventDefault(); } }) .autocomplete({ minLength: 1, source: function (request, response) { var term = request.term; if ( term in cache ) { response( cache[ term ] ); return; } $.ajax({ type: "POST", url: mlog.variable.base+"/admin/post/autocomplete?keyword=" + extractLast( request.term ) , contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { cache[ term ] = $.map(data, function(item){ return item.name }); response( $.ui.autocomplete.filter( $.map(data, function(item){ return item.name }), extractLast( request.term ) ) ); }, error: function () { alert("补全失败"); } }); }, focus: function() { // prevent value inserted on focus return false; }, select: function( event, ui ) { var terms = split( this.value ); terms.pop(); terms.push( ui.item.value ); terms.push( "" ); this.value = terms.join( ", " ); return false; } }); }); <script type="text/javascript" src="/script/jquery.js"></script> <link rel="stylesheet" type="text/css" href="/script/jquery-ui/themes/base/jquery.ui.all.css">

a123456678 2019-12-02 03:05:53 0 浏览量 回答数 0

问题

如何用Ajax CI实现 关注好友 功能

a123456678 2019-12-01 19:23:08 888 浏览量 回答数 1

问题

请教各位大神如何用Ajax CI实现关注好友的功能?

落地花开啦 2019-12-01 19:51:51 966 浏览量 回答数 1

新手开公司,教你化繁为简

开公司到底有没有那么难,传统的手续繁琐,线下跑断腿,场地搞不定等问题,通过阿里云”云上公司注册“解决你的烦恼。

问题

jQuery无法在标准promise中使用,求解

a123456678 2019-12-01 20:17:14 778 浏览量 回答数 1

回答

有点明白了,哈哈,异步的话,还是用回调函数吧   getData(function(data){ xxx; }); function getData(callback){ ...; callback(data); ...; } ######ajax可以设置同步!######可以试试用 $.Deferred###### 引用来自“con”的评论 可以试试用 $.Deferred 谢谢,刚才看dom数发现trigger和triggerHandler函数,一查也是看到了deffered,正在试,不过没有试验成功,希望能指导下 使用的jquery1.10.2和easyui1.4 简单地就是一个二级联动菜单,一个事件是一级菜单联动二级菜单,另外一个事件是载入数据的时候将数据写入(不过因为二级菜单跟着一级菜单走,所以得等到二级菜单载入完毕才能写入数据) 下面的代码都是放在$()里面的 //设置一级菜单的二级菜单联动 $('#topic1').combobox({ onChange:function(n,o){ topic2Loaded=false;//因为没有搞懂deferred用法,这个是加的全局变量准备用全局变量来判断 var f_s; //alert(1); f_s=getTopic2(n);    //这个是我现在的简单的存储处理方法 if(f_s==false){ $.post('../server/t_getsubtopic.php',{father:n},function(data,sta,xhr){ jQuery('#topic2').combobox('clear').combobox('loadData',data.topic); eval('db_topic2.'+'f'+n+'=data.topic;'); topic2Loaded=true; },'json'); }else{ jQuery('#topic2').combobox('clear').combobox('loadData',f_s); topic2Loaded=true; } } });        //初始化编辑器的显示内容 jQuery.post('../server/t_editorinit.php',function(data,sta,xhr){ var jjj; jQuery('#topic1').combobox('clear').combobox('loadData',data.topic); jQuery('#saved').attr('value',1); jQuery('#subject').combobox('clear').combobox('loadData',data.subject); if(data.topic.length==0){ jQuery.messager.alert('提示','当前无权限进行操作,请登陆后刷新本页面。','info'); //jQuery('#saved').window('close'); }else{ //是否读取数据,如果是的话读取数据 var id=getURLRequest('id'); if(id){ jQuery.post('../server/getcontent.php',{id:id},function(data,sta,xhr){ var topic=data.path[0]; //jQuery.when(jQuery('#topic1').combobox('select',topic.father.index);); jQuery('#topic1').combobox('select',topic.father.index);                                         //这里就没有看懂,包括看的jquery的api里面then貌似已经废弃了的,这里执行不下去 // jQuery.when(jQuery('#topic1').triggerHandler( // 'onChange',jQuery('#topic1').combobox('getValue') // )).done(jQuery('#topic2').combobox('select',topic.son.topicid)); jQuery('#topic2').combobox('select',topic.son.topicid); //jQuery('#saved').attr('saved')=1; },'json'); } } },'json'); ###### 试了半天没有试出来,现在这样做的,但是看着好丑…… 最主要是如果超500ms没有完成载入就丑了…… jQuery.post('../server/getcontent.php',{id:id},function(data,sta,xhr){ var topic=data.path[0];         jQuery('#topic1').combobox('select',topic.father.index).delay(500).queue(function(){             jQuery('#topic2').combobox('select',topic.son.topicid);         }); jQuery('#saved').attr('saved')=1; },'json'); ###### 1、首先是通过Deferred实现的数据存储 // 存储函数 function getData(dfd, name) { var sdata = []; // 缓存所有ajax请求过的数据 if ( sdata[name] ){ dfd.resolve( sdata[name] ); } else { $.ajax({ url: xxx, }).done( function (data) { sdata[name] = data; dfd.resolve( data ); }) } } // 调用方式 var dfd = $.Deferred(); dfd.done( function (data) { // 拿到数据后要执行的操作 }); getData(dfd, "name1"); Deferred对象的使用方式大抵如上。 2、combobox二级菜单 简单看了下easyui combobox的api,一级菜单被选择时,更新二级菜单内容,可以用类似下面的写法: $("#level_1").combobox({ onSelect: function (record) { // 获取二级菜单内容并缓存,调用上面的getData var dfd = $.Deferred(); dfd.done(function (data) { $("#level_2").combobox( 'loadData', data); }); //这里的record不知道是个啥东西,可能需要加工一下再传入getData getData(dfd, record); } }); 不知道这种方式是不是能满足你说的菜单联动和缓存数据的需求 ###### 引用来自“con”的评论 1、首先是通过Deferred实现的数据存储 // 存储函数 function getData(dfd, name) { var sdata = []; // 缓存所有ajax请求过的数据 if ( sdata[name] ){ dfd.resolve( sdata[name] ); } else { $.ajax({ url: xxx, }).done( function (data) { sdata[name] = data; dfd.resolve( data ); }) } } // 调用方式 var dfd = $.Deferred(); dfd.done( function (data) { // 拿到数据后要执行的操作 }); getData(dfd, "name1"); Deferred对象的使用方式大抵如上。 2、combobox二级菜单 简单看了下easyui combobox的api,一级菜单被选择时,更新二级菜单内容,可以用类似下面的写法: $("#level_1").combobox({ onSelect: function (record) { // 获取二级菜单内容并缓存,调用上面的getData var dfd = $.Deferred(); dfd.done(function (data) { $("#level_2").combobox( 'loadData', data); }); //这里的record不知道是个啥东西,可能需要加工一下再传入getData getData(dfd, record); } }); 不知道这种方式是不是能满足你说的菜单联动和缓存数据的需求 谢谢,因为没用过所以还不太清楚,不过我就当是回调函数理解的话貌似这样的确可以解决问题,有时间的时候我会试着用这个代码并学习一下deferred这个有用的东西的。 至于之前我的解决方式整体就是这样的,不过有eval在里面真的好丑…… var db_topic2={};//用于存储topic2的本地数据,以免频繁进行查询 function getTopic2(father){ //通过查询本地dbTopic2来获取topic2的数据,如果没有的话才进行远程查询 // father='f'+father;//转换为字符 var flag; eval('flag=db_topic2.'+father+';'); if(flag){ return flag; }else{ //通过数据进行查询 return false; } } //设置一级菜单的二级菜单联动 $('#topic1').combobox({ onChange:function(n,o){ $('#saved').prop('value','0');//设置未保存 var f_s; f_s=getTopic2(n); if(f_s==false){ $.post('../server/t_getsubtopic.php',{father:n},function(data,sta,xhr){ jQuery('#topic2').combobox('clear').combobox('loadData',data.topic); eval('db_topic2.'+'f'+n+'=data.topic;'); },'json'); }else{ jQuery('#topic2').combobox('clear').combobox('loadData',f_s); } } }); //载入数据时候的设置 jQuery('#topic1').combobox('select',n.father.index).delay(500).queue(function(){ jQuery('#topic2').combobox('select',n.son.topicid); $(this).dequeue(); }).delay(500).queue(function(){ //因为存在延时,所以得在这里再延时设置已保存状态 $('#saved').prop('value','1');//设置已保存 $(this).dequeue(); }); 看着很丑吧…… ###### /* * 获取数据方法 * name: 数据key * fn: 回调函数 */ function getData(name, fn) { if(typeof getData.cache[name] != "undefined") { fn(getData.cache[name]); return; } $.post("index.php", { name: name }, function (data) { getData.cache[name] = data; fn(data); }, "json"); } getData.cache = {}; //使用实例 getData("user", function (user) { alert(user.name); }); ###### 引用来自“mr-zhuo”的评论 /* * 获取数据方法 * name: 数据key * fn: 回调函数 */ function getData(name, fn) { if(typeof getData.cache[name] != "undefined") { fn(getData.cache[name]); return; } $.post("index.php", { name: name }, function (data) { getData.cache[name] = data; fn(data); }, "json"); } getData.cache = {}; //使用实例 getData("user", function (user) { alert(user.name); }); 谢谢,用回调函数适用范围应该更广一些。###### 这里有篇关于deferred的,不错。 http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html

kun坤 2020-06-07 00:35:34 0 浏览量 回答数 0

问题

jquery表单拦截和继续提交的问题

杨冬芳 2019-12-01 19:57:00 1025 浏览量 回答数 1

问题

ajax提交后台action后,怎么让后台action中跳转页面

小旋风柴进 2019-12-01 20:25:28 1785 浏览量 回答数 1

问题

ajax提交后台action后,怎么让后台action中通过struts来跳转页面?

a123456678 2019-12-01 20:24:05 2349 浏览量 回答数 1

回答

直接将写 的 ajax 函数,放入 click function 就可以了 ###### 引用来自“静心天涯”的评论 直接将写 的 ajax 函数,放入 click function 就可以了 额,用这段代码 var ecConfig = require('echarts/config');    myChart.on(ecConfig.EVENT.CLICK, eConsole);     function eConsole(param) {     alert(param.dataIndex+ "---"+ param.name);    } } 在ajax结束后出了方法块貌似就没用了...怎么解决? ######你是添加事件,还是触发事件??######给ajax加个sync=false参数######貌似还是不行...###### function ajxFun () { jQuery.ajax({ url: '/path/to/file', type: 'POST', dataType: 'xml/html/script/json/jsonp', data: {param1: 'value1'}, complete: function(xhr, textStatus) { //called when complete }, success: function(data, textStatus, xhr) { var elem = $('<li></li>'); elem.click(clickFun); $('ul').append(elem); }, error: function(xhr, textStatus, errorThrown) { //called when there is an error } }); } function clickFun () { alert("li 的点击事件。"); }</pre> 不知道有没有写错,大概就这个样子 ###### 引用来自“静心天涯”的评论 function ajxFun () { jQuery.ajax({ url: '/path/to/file', type: 'POST', dataType: 'xml/html/script/json/jsonp', data: {param1: 'value1'}, complete: function(xhr, textStatus) { //called when complete }, success: function(data, textStatus, xhr) { var elem = $('<li></li>'); elem.click(clickFun); $('ul').append(elem); }, error: function(xhr, textStatus, errorThrown) { //called when there is an error } }); } function clickFun () { alert("li 的点击事件。"); } 不知道有没有写错,大概就这个样子 echarts的事件绑定,我绑定了CLICK事件,但等AJAX结束后出了方法块事件就不会被触发了 $(document).ready(function() { // 模块引入,包引入方式 require.config({ packages: [ { name: 'echarts', location: '../../scripts/echarts/echarts', main: 'echarts' } ] }); //动态加载echarts然后在回调函数中开始使用 require([ 'echarts'], function(ec) { var echart = ec; var option = getOption(); option.title.text = "Vacancy Rate Report/(GLA)"; var myChart = echarts.init($("#result0")); myChart.setOption(option); var ecConfig = require('echarts/config'); myChart.on(ecConfig.EVENT.CLICK, eConsole); function eConsole(param) { alert(param.name); } }); }); 但是通过这种静态数据的方式是可以实现,这个应该怎么去实现..

kun坤 2020-05-29 11:50:46 0 浏览量 回答数 0

问题

关于答题注册判断分数跳转页面的问题

吴孟桥 2019-12-01 19:42:28 1508 浏览量 回答数 1

问题

jquery表单拦截和继续提交的问题

小旋风柴进 2019-12-01 19:22:57 923 浏览量 回答数 1

回答

function change() { var mark = document.getElementById('btn').innerText; if (mark == '关注') { document.getElementById('btn').innerText = "已关注"; } else { document.getElementById('btn').innerText = "关注"; } } <button id="btn" onclick="change()">关注</button> php 代码没写过,不过给你个思路吧 要实现关注你的接口肯定要首先写好,简单来说这个接口需要接收一个userid,即将被关注的那个用户的ID,控制器写好之后按照你的需求就是 ajax 调用了。这里来说两种情况,都可以 GET 请求 (如果你设计的url 为 /follow/ ) function change() { var mark = document.getElementById('btn').innerText; if (mark == '关注') { $.get('follow/<int: userid>', function(data) { //GET 请求这个url, 接口返回 data, 判断有没有关注成功来进行DOM操作 if (data == true) { document.getElementById('btn').innerText = "已关注"; } else { //失败了,自行处理吧 :) console.log('false'); } }) else { //取消关注,和关注差不多 } POST 请求 (如果你设计的url 为 /follow ) function change() { var mark = document.getElementById('btn').innerText; if (mark == '关注') { $.get('follow', {'userid': <int:userid>}, function(data) { //POST 提交`userid`请求这个url, 接口返回 data, 判断有没有关注成功来进行DOM操作 if (data == true) { document.getElementById('btn').innerText = "已关注"; } else { //失败了,自行处理吧 :) console.log('false'); } }) else { //取消关注,和关注差不多 } $.ajax() 别忘了引用 jquery。兼容性问题也要注意。

杨冬芳 2019-12-02 02:48:44 0 浏览量 回答数 0

问题

php jQuery 实现无刷新验证问题

小旋风柴进 2019-12-01 20:09:40 815 浏览量 回答数 1

问题

MVC下$.post第一次提交依旧是get方式,第二次才是post,怎么回事

小旋风柴进 2019-12-01 19:37:35 1286 浏览量 回答数 1

回答

1、jsonp必须遵循一个固定的格式。即请求的URL的search中必须存在一个jsonpcallback=functionName;响应的格式为functionName(/ json data /); 原理就是利用script不受同源策略限制的特点。2、在server返回数据之后,尽量删掉这个script。因为页面中有n多个jsonp,就会有n多个生成的script标签。造成dom臃肿。并且别人也可以通过观察html来指导你jsonp的请求细节。3、是看重写的mimeType是不是和server返回的一样。如果一样就没必要重写mimeType了。除此之外还用了setRequestHeader、overriderMimeType、abort等方法。4、看代码流程即可。我写了一个简单点的例子 (function (global) { // 防止低版本ie里,undefined被重写 var undefined = void(0); // 定义命名空间 var namespace = {}; // 默认的参数列表 var defaultOptions = { // ajax请求的路径是什么 url: '', // 往服务器发送的数据 data: '', // 使用什么http方法 type: 'get', // ajax请求方式,同步还是异步。默认为异步 async: true, // 成功时执行的函数 success: function (data) { }, // 失败时执行的函数 error: function (errInfo) { }, // 自定义请求首部列表 header: {}, // 重写的mimeType overrideMimeType: '', // 是否走缓存 cache: false, // 超时毫秒数。默认为0 表示不执行超时逻辑 timeout: 0, // 是否格式化参数为uri string processData: true, // 请求的mime类型 默认为表单提交 contentType: 'application/x-www-form-urlencoded', // 返回的数据格式 text|json dataType: 'text' }; /** * CORE * @param {Object} options 用户输入的参数 * @throw TypeError */ var ajax = function (options) { // 判断参数是否为对象,如果不是则抛出类型错误 if (!tool.isObject(options)) { throw new TypeError('参数类型错误'); } // 合并用户输入的参数列表和默认的参数列表 返回一个全新的参数列表对象 var userOptions = tool.extend(defaultOptions, options); // ajax第一步:获取ajax对象 var xhr = tool.getXHR(); // 1、如果是get系 需要把data拼接到url后面 if (/^(get|delete|head)$/img.test(userOptions.type)) { var data = tool.encodeToURIString(userOptions.data); userOptions.url = tool.hasSearch(userOptions.url, data); // 因为get系不需要传send参数,所以设置为null userOptions.data = null; } // 2、是否走缓存,如果不走缓存则在url后面加一个随机数来防止缓存 if (userOptions.cache === false) { // 因为search是有固定格式的 key=value 如果只写一个value是不合法的,所以必须构造一个key,而且这个key不能和已有的key重复 var random = '_=' + (Math.random() * 0xffffff).toFixed(0); userOptions.url = tool.hasSearch(userOptions.url, random); } // ajax操作第二步 xhr.open(userOptions.type, userOptions.url, userOptions.async); // 2.1 设置自定义请求首部信息 if (userOptions.header && tool.isObject(userOptions.header)) { tool.eachObject(userOptions.header, function (key, value) { xhr.setRequestHeader(key, value); }) } // 2.2 设置content-type http里表现mimeType的字段就是content-type // 设置请求的mimeType if (userOptions.contentType && tool.isString(userOptions.contentType)) { xhr.setRequestHeader('content-type', userOptions.contentType); } // 2.3 设置重写的mime类型 // 设置响应的mimeType if (userOptions.overrideMimeType && tool.isString(userOptions.overrideMimeType)) { xhr.overrideMimeType(userOptions.overrideMimeType); } // 2.4 判断是否执行超时逻辑 if (tool.isNumber(userOptions.timeout) && userOptions.timeout > 0) { xhr.timeout = userOptions.timeout; // 标准浏览器 if ('ontimeout' in xhr) { xhr.ontimeout = function () { userOptions.error('timeout'); } } else { // 低版本ie setTimeout(function () { // http的事务是否还没有完成 if (xhr.readyState !== 4) { // 强制终止http事务 xhr.abort(); } }, xhr.timeout); } } // 2.5 是否需要处理给服务器发送的数据,判断processData是否为true // 当给服务器发送的数据为二进制或者formData的时候,不需要处理这个数据 // 要把processData设置为false if (/^(post|put)$/igm.test(userOptions.type) && userOptions.processData === true) { userOptions.data = tool.encodeToURIString(userOptions.data); } // ajax第三步:接收响应 xhr.onreadystatechange = function () { // http的事务是否完成 if (xhr.readyState === 4) { // 获取响应主体 var responseText = xhr.responseText; // 判断状态码是否成功 if (/^2\d{2}$/.test(xhr.status)) { // 判断是否需要把响应主体格式化为json对象 if (userOptions.dataType === 'json') { // 因为不合法的json字符串无法转换为json对象,会出异常 try { responseText = tool.JSONParse(responseText); } catch (ex) { userOptions.error(ex); return; } } userOptions.success(responseText); // R如果响应码是错误的类型 } else if (/^(4|5)\d{2}$/.test(xhr.status)) { // 直接执行error userOptions.error(xhr.status); } } }; // ajax第四步:发送 xhr.send(userOptions.data); }; /** * 利用闭包,实现获取数据类型 * @param {string} type 数据类型 * @returns {Function} */ var getType = function (type) { return function (obj) { // 为什么要用Object.prototype.toString来判断类型? return Object.prototype.toString.call(obj) === '[object ' + type + ']'; } }; var tool = { /** * 利用惰性函数,实现获取ajax对象的方法 */ getXHR: (function () { var list = [function () { return new XMLHttpRequest; }, function () { return new ActiveXObject('Microsoft.XMLHTTP'); }, function () { return new ActiveXObject("Msxml2.XMLHTTP"); }, function () { return new ActiveXObject("Msxml3.XMLHTTP"); }]; var len = list.length; var xhr = null; while (len--) { try { list[len](); xhr = list[len]; break; } catch (ex) { continue; } } if (xhr !== null) { return xhr; } throw new Error('当前浏览器不支持此方法'); })(), /** * 合并多个对象 * @returns {{}} 合并后的对象 */ extend: function () { // 因为参数长度不固定,所以把参数列表转成数组 // var params = [].slice.call(arguments, 0); var voidObj = {}; this.each(arguments, function (item) { // item为每一个参数对象 tool.eachObject(item, function (key, value) { voidObj[key] = value; }); }); return voidObj; }, /** * 循环帮助函数,利用惰性函数 */ each: (function () { if ([].forEach) { return function (list, callback, context) { [].forEach.call(list, callback, context); } } return function (list, callback, context) { for (var i = 0, j = list.length; i < j; i++) { callback.call(context, list[i], i, list); } } })(), /** * 循环对象 * @param {Object} obj 要循环的对象 * @param {Function} callback 回调函数 * @param {Object|undefined} context 回调函数里头的上下文对象 */ eachObject: function (obj, callback, context) { for (var n in obj) { if (!obj.hasOwnProperty(n)) continue; callback.call(context, n, obj[n]); } }, /** * 给tool动态添加判断数据类型的方法 */ init: function () { this.each(['Object', 'Function', 'Array', 'String', 'Number'], function (item) { tool['is' + item] = getType(item); }) }, /** * 把一个对象格式化为uri string * @param {*} data 需要格式化的数据 * @return {string} 格式化之后得到的uri string */ encodeToURIString: function (data) { if (this.isString(data)) return data; if (!this.isObject(data)) return ''; var arr = []; this.eachObject(data, function (key, value) { arr.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); }); return arr.join('&'); }, /** * 往url后面拼接参数的方法 * @param {string} url url * @param {string} padString 要拼接的参数 * @returns {string} 拼接之后的url */ hasSearch: function (url, padString) { if (!padString) return url; // 如果有问号,说明url里已经有参数了,因为参数和参数之间用&来分隔 /*if (/\?/.test(url)) { return url + '&' + padString; } else { return url + '?' + padString; }*/ return url + (/\?/.test(url) ? '&' : '?') + padString; }, /** * 把json字符串格式化为json对象 * @param {string} jsonString json字符串 * @return {Object} json对象 */ JSONParse: function (jsonString) { if (window.JSON) { return JSON.parse(jsonString) } return eval('(' + jsonString + ')'); } }; tool.init(); // 把ajax方法放入命名空间中 namespace.ajax = ajax; tool.each(['get', 'post'], function (item) { /** * 动态添加get和post方法 * @param {string} url 请求的url * @param {Object} data 往服务器发送的数据 * @param {Function} callback 成功的回调函数 * @param {string} dataType 数据格式 */ namespace[item] = function (url, data, callback, dataType) { ajax({ url: url, type: item, data: data, success: callback, dataType: dataType }); } }); // 先把全局里已经存在的x先放到一边 var globalX = global.x; /** * 解决全局变量名冲突 * @param {string|undefined} symbol 更改的全局变量名 * @returns {Object} */ namespace.noConflict = function (symbol) { if (symbol && tool.isString(symbol)) { window[symbol] = namespace; } global!==undefined&&(window.x = globalX); return namespace; }; // 暴露到全局环境中 global.x = namespace; })(this); 用法和jquery的一样。不过我暴露的是x变量,不是$.

小旋风柴进 2019-12-02 02:28:33 0 浏览量 回答数 0

回答

用$.getJSON()也解决不了问题 ###### // 局域网 访问java项目里的数据 var studentId = $("#studentId").val();     var schoolId = $("#schoolId").val();  jQuery.ajax({      type:"get",      async:false,      dataType:"jsonp",      data: "schoolId="+schoolid+"&studentId="+studentid,      jsonp:"callback",      jsonpCallback:"success_jsonpCallback",      url: "http://192.168.1.14:8080/.../..",      success: function(json){     $("#jiucuoben").html(json[0].result);     $("#stujiucuoti").html(json[0].result1);     //alert(json);      }    }); // 试试看啊   我的是成功了###### 设置$.ajax的crossDomain参数试一下。不过我觉得你的情况自己多半还得在后台写个代理。###### 引用来自“MUTEX”的答案 设置$.ajax的crossDomain参数试一下。不过我觉得你的情况自己多半还得在后台写个代理。 我试过那个参数了。没有用。 ###### 引用来自“白色风车”的答案 // 局域网 访问java项目里的数据 var studentId = $("#studentId").val();     var schoolId = $("#schoolId").val();  jQuery.ajax({      type:"get",      async:false,      dataType:"jsonp",      data: "schoolId="+schoolid+"&studentId="+studentid,      jsonp:"callback",      jsonpCallback:"success_jsonpCallback",      url: "http://192.168.1.14:8080/.../..",      success: function(json){     $("#jiucuoben").html(json[0].result);     $("#stujiucuoti").html(json[0].result1);     //alert(json);      }    }); // 试试看啊   我的是成功了 谢谢。我写的是纯静态页面。 ###### 纯静态页面想跨域访问不是自己主机的json基本是不可能的 如果目标主机的代码改不了,一般做法是通过服务器代码中转,再发送到前台js######谢谢。###### http://my.oschina.net/liuxiaori/blog/64256 看这里,刚写的如何解决跨域问题###### 引用来自“Liuxey”的答案 纯静态页面想跨域访问不是自己主机的json基本是不可能的 如果目标主机的代码改不了,一般做法是通过服务器代码中转,再发送到前台js 中转这个思路不错  ######通常就是这么用的######script是跨越的,$.getScript,不过要看你传输的数据有多少了,印象中这种不能用post方式。。###### 引用来自“Andre.Z”的答案 script是跨越的,$.getScript,不过要看你传输的数据有多少了,印象中这种不能用post方式。。 楼主是要纯静态的解决方案。 ######回复 @Andre.Z : 纯静态是实现不了的,可以使用代理来做转换.######彻底无语。

爱吃鱼的程序员 2020-06-02 17:20:54 0 浏览量 回答数 0

回答

现在wap网站还有个蛋用。 ######手机版比电脑版舒服######jquery mobile在手机上巨卡。。而且太费流量。。外国人的东西不一定适合国情######太有同感了,就用他那三个文件都那么大,浪费流量######速度挺快的######能不能share源码。。。 ######UC浏览器经过二次处理的(UC的服务端预处理了页面)。###### jquery mobile 不兼容UC浏览器  是妥妥的 jqm 就是个坑。。 ######jquery mobile 最大的缺点就是他那三个文件太多了,浪费流量,今天把图片显示进行了优化,默认不显示,点击显示时显示手机版对应的图片(说明一下实现思路:发布内容时并不用保存手机版的图片格式,只要手机版要用到图片时才找相应的图片,如果已有人点击过该图片的显示,以后的人再点击时不再向 www.ablanxue.com 找对应的图片,而是在wap.ablanue.com下找图片。这样可以做到省流量也省服务器空间)。个人是这么想的。###### 引用来自“gosu”的答案 现在wap网站还有个蛋用。 没什么用,玩玩而已。 ajax请求servlet时,为何页面一直调整? 400 请求报错  我现在就是想用ajax请求 servlet,有错误直接在页面显示,不跳转页面,不知道为何一直跳转 前台ajax $.ajax({ type : "post", url : "${basePath}/servlet/SysUserManageAction?action=register", data : params, dataType:'text', success : function(data) { alert(data); if (data) { // alert("ajax成功!"); // var url = $("#save").val(); // window.location = url; } else { // alert(json.msg || "ajax失败!"); } }, error : function(json) { alert("ajax失败!"); } }); 后台servlet public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path = request.getContextPath(); request.setCharacterEncoding("utf-8"); response.setContentType("text/html; charset=utf-8"); PrintWriter out = response.getWriter(); String action = request.getParameter("action"); if ("register".equals(action)) { String flag = service.userRegister(request, response); if (flag == null) { out.write("注册成功"); } else { out.println("注册失败"); } } out.flush(); out.close(); }

kun坤 2020-05-29 12:12:32 0 浏览量 回答数 0

回答

遇到这种问题,我的回答总是一样的: 别瞎JB折腾了,在后台自己封装一次,然后在同一个域名之下调用吧! ######少了一个callback参数,并且服务返回的内容必须是callback包的###### 看下我的这个例子,我当初模仿京东和淘宝做单点登录,跨域问题处理 <script>varsuccess_count=0;varerror_count=0;$.ajax({type:"get",dataType:"jsonp",url:"http://sso:8080/getAllDomain?callback=?",crossDomain:true,success:function(domains){if(domains){$.each(domains,function(){$.ajax({type:"get",dataType:"jsonp",url:this,crossDomain:true,success:function(data){success_count++;console.log("success");},error:function(){error_count++;}});})}}});</script> 这是后端 @RequestMapping("getExitAllDomain")publicvoidgetExitAllDomain(HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse){List<String>allDomain=newArrayList<String>();allDomain.add("http://sso:8080/delCookie?t=a:8080&callback=?");allDomain.add("http://sso:8080/delCookie?t=b:8080&callback=?");allDomain.add("http://sso:8080/delCookie?t=c:8080&callback=?");allDomain.add("http://sso:8080/delCookie?t=d:8080&callback=?");PrintWriterout=null;try{out=httpServletResponse.getWriter();}catch(IOExceptione){e.printStackTrace();}Stringcallback=httpServletRequest.getParameter("callback");out.println(callback+String.format("(%s);",JSON.toJSONString(allDomain)));}  ######如果用jsonp看下服务器返回的是不是回调函数类型,跨域建议使用cors###### 别人说设置jsonp是说在jquery的ajax方法的时候,你封装的那个不知道...###### 在jQuery的ajax方法下用jsonp,你那个封装方法虽然看起来差不多但是具体里面对跨域的处理不知道写了什么,只能自己另外做处理###### 先研究一下jsonp的实现方法再用###### 可以看我的这篇,https://my.oschina.net/tp123/blog/1506646 希望对你有帮助###### 解决了###### Stringorigin=request.getHeader( "Origin") ; if(StringUtils. isNotBlank(origin)){response.setHeader( "Access-Control-Allow-Origin" ,origin) ; //允许访问的域 response.setHeader( "Access-Control-Allow-Methods" , "POST,GET") ; //允许GET、POST的外域请求 response.setHeader( "Access-Control-Allow-Credentials" , "true") ; //允许请求带cookie到服务器 response.setContentType( "application/json;charset=utf-8") ; //设定JSON格式标准输出、及编码}

优选2 2020-06-09 15:44:15 0 浏览量 回答数 0

回答

遇到这种问题,我的回答总是一样的: 别瞎 JB 折腾了,在后台自己封装一次,然后在同一个域名之下调用吧! ######少了一个callback参数,并且服务返回的内容必须是callback包的###### 看下我的这个例子,我当初模仿京东和淘宝做单点登录,跨域问题处理 <script> var success_count = 0; var error_count = 0; $.ajax({ type: "get", dataType: "jsonp", url: "http://sso:8080/getAllDomain?callback=?", crossDomain: true, success: function (domains) { if (domains) { $.each(domains, function () { $.ajax({ type: "get", dataType: "jsonp", url: this, crossDomain: true, success: function (data) { success_count++; console.log("success"); }, error: function () { error_count++; } }); }) } } }); </script> 这是后端 @RequestMapping("getExitAllDomain") public void getExitAllDomain(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { List<String> allDomain = new ArrayList<String>(); allDomain.add("http://sso:8080/delCookie?t=a:8080&callback=?"); allDomain.add("http://sso:8080/delCookie?t=b:8080&callback=?"); allDomain.add("http://sso:8080/delCookie?t=c:8080&callback=?"); allDomain.add("http://sso:8080/delCookie?t=d:8080&callback=?"); PrintWriter out = null; try { out = httpServletResponse.getWriter(); } catch (IOException e) { e.printStackTrace(); } String callback = httpServletRequest.getParameter("callback"); out.println(callback + String.format("(%s);", JSON.toJSONString(allDomain))); }  ######如果用jsonp看下服务器返回的是不是回调函数类型,跨域建议使用cors###### 别人说设置jsonp是说在jquery的 ajax方法的时候,你封装的那个不知道...###### 在jQuery的ajax方法下用jsonp,你那个封装方法虽然看起来差不多但是具体里面对跨域的处理不知道写了什么,只能自己另外做处理###### 先研究一下jsonp的实现方法再用###### 可以看我的这篇,https://my.oschina.net/tp123/blog/1506646  希望对你有帮助###### 解决了###### String origin = request.getHeader("Origin"); if(StringUtils.isNotBlank(origin)){ response.setHeader("Access-Control-Allow-Origin", origin); // 允许访问的域 response.setHeader("Access-Control-Allow-Methods", "POST,GET");// 允许GET、POST的外域请求 response.setHeader("Access-Control-Allow-Credentials", "true"); // 允许请求带cookie到服务器 response.setContentType("application/json; charset=utf-8"); // 设定JSON格式标准输出、及编码 }

爱吃鱼的程序员 2020-05-31 13:06:55 0 浏览量 回答数 0

问题

如何通过php的curl模拟ajax请求,获取其返回值? 400 报错

优选2 2020-06-05 16:45:01 0 浏览量 回答数 1

问题

如何通过php的curl模拟ajax请求,获取其返回值? 400 报错

爱吃鱼的程序员 2020-05-29 19:58:09 0 浏览量 回答数 1

问题

本人js小白,有一ajax问题请求大神帮忙解决 400 请求报错 

kun坤 2020-05-30 17:28:04 0 浏览量 回答数 1

回答

Jquery里的POST和GET都是对ajax方法的封装,你可以自己进行封装。$.ajax({ url: 'www.website.com', type: 'DELETE', data: {} });执行后就会有Request Method:DELETE的http头被传到后端。OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE都是可以使用的Http1.1(连IE7都支持,其他浏览器不可能不支持)。至于你说的实现问题,我认为不存在,只是你服务端有没有做相应的处理,HTTP是协议不是技术。方法GET和HEAD应该被所有的通用WEB服务器支持,其他所有方法的实现是可选的。W3C有明确的说明。http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

小旋风柴进 2019-12-02 02:22:00 0 浏览量 回答数 0

回答

思路清奇,让我眼前一亮######大佬别嘲笑###### 既然有for为什么不用v-for?html是哪里来的?你的这个路由是首页还是不是?所有的都跳转到首页貌似没有意义吧? 最后,你用v-html渲染出来的是vue的命令的字符串,是不会被转化成实际的html的,当然不会起作用。你看你最后页面上li里面的是router-link标签,这个只在.vue中才有意义。######目前还对这东西不是很了解,刚才参考官方文档改成下面的样子,已经实现了,现在这设计有什么问题,因为刚学,虽然实现,但是符不符合规范或者怎么样的###### 参考官方文档,目前修改成如下这样解决了问题: <li v-for="item in navList" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-173"> <router-link v-bind:to="item.menuUrl" v-text="item.menuName"></router-link> </li> export default { name: 'NavBar', data () { return { navList:[] } }, created () { var that = this; $.ajax({ type: "post", data: {}, url: this.GLOBAL.baseURL+, dataType: "json", success: function(data){ that.navList=data; } }) } }###### v-html 不再支持 vue 的相关语法,只支持原生的html 语法###### 还保留着 jQuery的 思想哈######根深蒂固

爱吃鱼的程序员 2020-05-30 23:58:28 0 浏览量 回答数 0

问题

通过JSON将对象数组发布到ASP.Net MVC3

保持可爱mmm 2020-02-09 12:09:28 0 浏览量 回答数 1

问题

程序员报错QA大分享(1)

问问小秘 2020-06-18 15:46:14 8 浏览量 回答数 1

问题

【javascript学习全家桶】934道javascript热门问题,阿里百位技术专家答疑解惑

管理贝贝 2019-12-01 20:07:22 6202 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播