A. aJax方法利用jsonp如何跨域把json包发给远程服务器
加上 async:false,
$.ajax({
async:false,
url:"ajax_jsq.php",
data:dta,
success:function(re){
}
B. 如何向服务器发送json数据
版权声明:本文为博主原创文章,未经博主允许不得转载。
Ajax中可以使用xml作为参数发送给服务器,除了XML还可以使用JSON(http://www.json.org/json-zh.html)
XML的一个替代方法是JSON,JSON是一种文本格式,它独立于具体语言,JSON建立在以下两种数据结构基础上:
名/值对集合,在不同的语言中,被实现为一个对象、记录、结构或字典
值的有序表,在大部分语言中,实现为数组
JSON可以做为异构系统之间的一种数据互换格式。
JSON对象是名/值对的无序集合({},使用“:”分隔),JSON数组是一个有序的值集合([],使用“,”分隔)
如下就是一个JSON格式的数据:
var employee = {
“firstName” : John
, “lastName” : Do
C. 如何使用ajax将json传入后台数据
首先,我们来写一下后台如何生成要传输的数据:
这样,就可以把数据无刷新的写入到数据库。
D. 如何使用ajax将json传入后台数据
首先采用jquery内部封装好的方法是比较简单的,我们只需做的就是修改里面的一些配置:
以下代码是对$.ajax()的解析:
$.ajax({
type: "POST", //提交方式
contentType: "application/json; charset=utf-8", //内容类型
dataType: "json", //类型
url: "前台地址/后台方法", //提交的页面,方法名
data: "parameter", //参数,如果没有,可以为null
success: function (data) { //如果执行成功,那么执行此方法
alert(data.d); //用data.d来获取后台传过来的json语句,或者是单纯的语句
},
error: function (err) { //如果执行不成功,那么执行此方法
alert("err:" + err);
}
});
当然我初次学习的时候,看到这些也是有些茫然的,因为不知道到如何才能将其用到自己的程序里面,所以就写了一个小的检测网页来测试一下,如果你测试的时候没有达到你想要的结果,那么希望你回头看一下,前台是否写的有问题,或者是参考一下下文中的注意事项吧。
前台代码 :
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="number3.aspx.cs" Inherits="ajax1.number3" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>测试ajax</title>
<script src="js/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript" language="javascript">
function testAjax() {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: "number3.aspx/GetJson",//传入后台的地址/方法
data: "{'RID':'123'}",//参数,这里是一个json语句
success: function (data) {
var result = data.d;
alert(result);
},
error: function (err) {
alert("err:" + err);
}
});
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<button >用button测试ajax</button>
<input type="button" value="testAjax" />
</div>
</form>
</body>
</html>
后台代码:
using System;
using System.Web.Services;
namespace ajax1
{
public partial class number3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod]
public static string GetJson(string RID)
{
return "{'ID':'" + RID + "'}";
}
}
}
后台代码中以黄色为背景的就是我们要注意的地方:
1.using System.Web.Services;对应下面的[WebMethod]这个一定要加上的。
2.后台写的方法一定是公共静态的即一定是public static开头的。
3.参数一定是前台的data所传参数的键
前台中要注意的地方:
1.大家应该会注意到,前台我用的是两个button来测试,但是第一个<button>是不行的,页面会刷新一下,其实这都是<form
id="form1"
runat="server">这行代码的问题,<button>标签会提交本页面的内容,从而导致异步刷新失败。所以建议大家不要用<button>标签。但是如果不得不用的话,解决办法还是有的,目前我知道的只有两个:
①:将<form id="form1"
runat="server">代码去掉,当然如果本页面有要提交的内容就会很麻烦了
②:将<button onclick="aaa();return
false;">用button测试ajax</button>代码改为:<button
onclick="aaa();return false;">用button测试ajax</button>
2。前台的测试结果是:
那么我们如何来只获取json后面的值,而不是整个json语句呢,我们可以将json语句对象化,然后根据键来取得对应的值:前台的testAjax()的方法改为:
function testAjax() {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: "number3.aspx/GetJson",
data: "{'RID':'123'}",
success: function (data) {
var result = eval("(" + data.d + ")");//这句话是将json语句对象化
alert(result.ID);
},
error: function (err) {
alert("err:" + err);
}
});
}
此时结果为:
以上就是初步学习json当时遇到的问题所留下的经验。同时我想验证一下是否能够在后台重载方法来实现根据前台的data是否有参数来判断要执行的方法,所以我将代码改动了一下:
改动后的前台代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="number3.aspx.cs" Inherits="ajax1.number3" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>测试ajax</title>
<script src="js/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript" language="javascript">
function testAjax() {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: "number3.aspx/GetJson",
data: "{'RID':'123'}",
success: function (data) {
var result = eval("(" + data.d + ")");
alert(result.ID);
},
error: function (err) {
alert("err:" + err);
}
});
}
function aaa() {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: "number3.aspx/GetJson",
success: function (data) {
alert(data.d);
},
error: function (err) {
alert("err:" + err);
}
});
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<button >用button测试ajax</button>
<input type="button" value="testAjax" />
<input type="button" value="aaa" />
</div>
</form>
</body>
</html>
改动后的后台代码
using System;
using System.Web.Services;
namespace ajax1
{
public partial class number3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod]
public static string GetJson()
{
return "hello ajax";
}
[WebMethod]
public static string GetJson(string RID)
{
return "{'ID':'" + RID + "'}";
}
}
}
所得的效果为:
第一个和第二个按钮点击后效果为:
第三个按钮点击后效果为:
所以我的初步结论为:后台的重构函数是不成功的,如果有的重构参数的话,只会执行带参数的,而不会执行那个不带参数的。现在还不是太明白为什么会这样,所以希望明白原理的分享一下自己的观点。当然这只是个人观点,如若有误,望请指正。
E. 一分钟学会什么是Ajax及Ajax请求的五个步骤
AJAX的意思就是异步的JavaScript和XML。简而言之,它是使用XMLHttpRequest对象与服务器端通信的脚本语言。它可以发送及接收各种格式的信息,包括JSON、XML、HTML和文本文件。AJAX最为吸引人的就是它的“异步”特性,AJAX可以无需刷新页面而与服务器端进行通信。
Ajax请求的五个步骤:
1、建立xmlHttpRequest对象
if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
if(xmlHttp.overrideMimeType) {
xmlHttp.overrideMimeType("text/xml");
}
} else if(window.ActiveXobject) {
var activeName = ["MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
for(var i = 0; i < activeName.length; i++) {
try {
xmlHttp = new ActiveXobject(activeName[i]);
break;
} catch(e) {}
}
}
if(!xmlHttp) {
alert("创建xmlhttprequest对象失败");
} else {}
2、设置回调函数
xmlHttp.onreadystatechange= callback;
function callback(){}
3、使用OPEN方法与服务器建立连接xmlHttp.open("get","ajax?name="+ name,true)
此步注意设置http的请求方式(post/get),如果是POST方式,注意设置请求头信息xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
4、向服务器端发送数据
xmlHttp.send(null);如果是POST方式就不为空
5、在回调函数中针对不同的响应状态进行处理
if(xmlHttp.readyState == 4){ //判断交互是否成功
if(xmlHttp.status == 200){ //获取服务器返回的数据 //获取纯文本数据
var responseText =xmlHttp.responseText;
document.getElementById("info").innerHTML = responseText;
}
}
(5)ajaxjson是如何和服务器通信的扩展阅读:
Ajax优缺点
优点:
1、异步请求,不妨碍用户浏览页面或者其他操作。
2、局部刷新,无需重新刷新页面。
3、界面与应用分离。有利于分工合作、减少非技术人员对页面的修改造成的WEB应用程序错误、提高效率、也更加适用于现在的发布系统。
4、基于标准被广泛支持。
5、前端和后端负载平衡。最大程度的减少冗余请求和响应对服务器造成的负担,提升站点性能。
缺点:
1、back和History,对浏览器机制的破坏。
2、安全问题。易受到黑客攻击。
3、对搜索引擎支持较弱。
4、不能很好支持移动设备。
5、违背URL和资源定位的初衷。
F. ajax是用什么数据格式跟服务器交互的
用JSON来传数据,靠JSONP来跨域
G. 如何使用Ajax异步请求JSon数据
$.ajax({
url : url,
type : 'post',
dataType : 'json',
data : data
success : function(data){
if(callback){
callback.call(this,data);
}
}
});
这是一个标准的ajax请求,你可以根据自己的实际去修改url,data的数据,服务器成功返回后success中存储了对应的后台传递过来的json数据,你可以根据自己的情况进行解析
H. ajax中枚举数组转换成JSON字符串,服务端如何接收
服务端可以这样处理:
$data=file_get_contents('php://input');
$arr=json_decode($data,true);
然后$arr[0]就是前端数组中的"a1",$arr[1]就是"a2",依此类推
-----------------------------
后期补充:
我这边测试是完全没问题的,附我的测试代码:
html端:
<div id="showdata"></div>
<script>
var myjson=JSON.stringify(["a1","a2","a3"]);
$.ajax({
url:"test.php", //这是我自己的测试文件名
type:"POST",
data:myjson,
success:function(res){
$("#showdata").html(res);
}
});
</script>
php端(test.php):
<?php
$data=file_get_contents('php://input');
$arr=json_decode($data,true);
echo $arr[0];
?>
I. ajax 中以json传给服务器端,怎么传,以什么形式传,传到服务器端后怎么接收,要解析吗,要的话怎么做
ajax多数都是POST 少数GET 传给服务器, ajax的url就是服务器端程序 比如 a.asp 或者 p.php
, request.("") 或者 $_request都可以使用 ,回传json形式{"",""}
J. ajax传递json,然后服务器接受json的代码编写
1.ajax发送请求(建议使用jQuery):
$.ajax({
method:post;
url: "你要发送到后台去的地址",
parameter:你要传送的数据,
beforeSend:function(){在发送请求之前你要做的事}
afterSend:function(){在发送请求后你想做的事}
success:function(){alert('成功了!')}
});
2.后台处理JSON数据:
1)最基本的原理性解决办法:JSON不过是通过request对象传过来的键值对而已,直接获得request对象,去对应的属性就行了。
2)net.sf.json.JSONObject这个包你可以学习下,也不是很难。
3.关于返回页面:
你要控制页面跳转么?那你使用AJAX干毛啊?使用AJAX就是为了不刷新页面而把值传到后台去的。