js 怎么ajax get请求数据

JavaScript018

js 怎么ajax get请求数据,第1张

用jQuery $.get() 方法:

$.get() 方法通过 HTTP GET 请求从服务器上请求数据。

语法:

$.get(URL,callback)

必需的 URL 参数规定您希望请求的 URL。

可选的 callback 参数是请求成功后所执行的函数名。

例子:

<script>

$(document).ready(function(){

$("button").click(function(){

$.get("/try/ajax/demo_test.php",function(data,status){

alert("数据: " + data + "\n状态: " + status)

})

})

})

</script>

希望对你有帮助,望采纳!

请参照下面的例子:

/*URL可以随意改*/

String uriAPI = "http://192.168.1.100:8080/test/test.jsp?u=wangyi&p=456"

/*建立HTTP Get对象*/

HttpGet httpRequest = new HttpGet(uriAPI)

try

{

/*发送请求并等待响应*/

HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest)

/*若状态码为200 ok*/

if(httpResponse.getStatusLine().getStatusCode() == 200)

{

/*读*/

String strResult = EntityUtils.toString(httpResponse.getEntity())

/*去没有用的字符*/

strResult = eregi_replace("(\r\n|\r|\n|\n\r)","",strResult)

mTextView1.setText(strResult)

}

else

{

mTextView1.setText("Error Response: "+httpResponse.getStatusLine().toString())

}

}

catch (ClientProtocolException e)

{

mTextView1.setText(e.getMessage().toString())

e.printStackTrace()

}

catch (IOException e)

{

mTextView1.setText(e.getMessage().toString())

e.printStackTrace()

}

catch (Exception e)

{

mTextView1.setText(e.getMessage().toString())

e.printStackTrace()

}

HTTP请求是指从客户端到服务器端的请求消息,包括消息首行中,对资源的请求方法、资源的标识符及使用的协议。如果HTTP/1.0服务器收到简单请求,它必须回应一个HTTP/0.9格式的简单回应。

我尝试用我的语言描述一下吧:

先说跨域请求的原理,浏览器的安全机制是不允许出现跨域请求的,否则会有很严重的安全问题,解决跨域问题有几种不同的方法,你题目中提到的方法就是通过在Response header中添加 Access-Control-Allow-Origin 来让浏览器知道服务器所在的域,对用于访问的域进行了授权。

但是因为这个Header要服务器提供,所以无论如何,请求是要先发出去才能指导是不是允许跨域请求,所以在报跨域错误的时候,虽然报错了,但是请求实际上依然发送到服务器了,只是浏览器看了一眼服务器的返回,然后发觉不行,这个请求返回的header里没有授权,所以浏览器不能用。

这样就带来一个问题,请求会对服务器造成影响,试想一下,要使用XHR跨域提交一个表单,无论返回头里面是否添加了跨域的header,都会提交一个请求到服务器,服务器要进行相应的操作。这种情况其实在一定条件下也是可以接受的,但是如果有更大的安全隐患,就不可以了,所以就需要OPTIONS请求了。

OPTIONS请求就是在符合一定条件下的跨域请求发送之前,浏览器会先发一个OPTIONS请求,问一下服务器,是不是能跨域,如果能,就发真正的请求,如果不能,就不发了。这个的作用就很好理解了。

如上面所说,不是所有的跨域请求都要先发OPTIONS请求的,规范里面规定,以下情况不需要先发一个 OPTIONS请求:

请求类型必须是GET、HEAD、POST中的一种。

请求的Header里面只能包涵一些规范重点Header,以及规范的值,包括:Accept、Accept-Language、Content-Language、Content-Type、DPR、Downlink、Save、Data、Viewport-Width、Width

Content-Type的类型必须是以下几种:application/x-www-form-urlencoded、multipart/form-data、text/plain

所以,如果你不希望浏览器多余的发一个OPTIONS请求,只要遵循这个规范就可以了。

但是有时候因为需求原因,也难避免要自定义一些Header。比如,很多JS的AJAX库,都会自定义一个Header,让服务器可以识别出这是否是一个异步请求,这样OPTIONS请求就一定要被先发送了。

顺便说,服务器端也要判断OPTIONS类型的请求,进行一系列操作,不要让OPTIONS请求影响到数据。

更多内容,可以看相关资料和文档:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

https://developer.mozilla.org/en-US/docs/Web/HTTP/Server-Side_Access_Control

https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html