前端ajax

function doRefund()
{

  

$.ajax({
type: "POST",
catch: false,
url: "@Url.Action("AliBarPay", "Alipay")",
data: {
strTradeNo: $("input[name='strTradeNo']").val(),
strAuthcode: $("input[name='strAuthcode']").val(),
strTotalAmount: $("input[name='strTotalAmount']").val()
},
dataType:'json',//返回数据类型为json类型
success: function (json) {
if (json.result) {
alert(json.msg)
} else {
alert(json.msg);
}
},
error: function (json) {
alert(json.msg);
} });

}

  后端controller中代码:

public ActionResult AliBarPay(string strTradeNo, string strAuthcode, string strTotalAmount)
{
AlipayTradePayContentBuilder builder = BuildPayContent(strTradeNo, strAuthcode, strTotalAmount);
string out_trade_no = builder.out_trade_no; AlipayF2FPayResult payResult = serviceClient.tradePay(builder); bool bResult = false;
switch (payResult.Status)
{
case ResultEnum.SUCCESS:
DoSuccessProcess(payResult);
bResult = true;
strResult = "支付成功!";
break;
case ResultEnum.FAILED:
DoFailedProcess(payResult);
break;
case ResultEnum.UNKNOWN:
strResult = "网络异常,请检查网络配置后,更换外部订单号重试";
break;
}
var vJson = new { result = bResult, msg = strResult };
return Json(vJson);//返回json类型
}
 $.ajax({
type: "POST",
url: "/Alipay/AlipayRefund",
data: {
strTradeNo: $("input[name='strTradeNo3']").val(),
strProductId: $("input[name='strProductId']").val(),
strRefoundAmount: $("input[name='strRefundAmount']").val(),
},
dataType: "text",//返回类型为string的
success: function (result) {
if (result == "" || result == null)
{
alert("无返回值");
return;
}
$("#refundDetail").html(result);
alert(result);
}
});

  后端controller:

 public ActionResult AlipayRefund(string strTradeNo,string strProductId,string strRefoundAmount)
{
AlipayTradeRefundContentBuilder builder = BuildRefundContent(strTradeNo, strProductId, strRefoundAmount); AlipayF2FRefundResult refundResult = serviceClient.tradeRefund(builder); switch (refundResult.Status)
{
case ResultEnum.SUCCESS:
strResult = DoRefundSuccessProcess(refundResult);
break;
case ResultEnum.FAILED:
strResult = DoRefundFailedProcess(refundResult);
break;
case ResultEnum.UNKNOWN:
if (refundResult.response == null)
{
strResult = "配置或网络异常,请检查";
}
else
{
strResult = "系统异常,请走人工退款流程";
}
break;
} return Content(strResult);//返回string类型 }

其中必须注意的是,如果是button来调用ajax,必须指定button的type='button',不然在ajax中不会返回值:

<div>
<span>支付宝退费</span>
<form>
<span>商户订单号:</span><input type="text" name="strTradeNo3" />
<span>支付宝订单号:</span><input type="text" name="strProductId" />
<span>总金额金额:</span><input type="text" name="strRefundAmount" />
<button id="doSubmit4" type="button" onclick="doRefund()">退费提交</button>//type='button' 必须写,不然在方法中执行没得返回值,但chrom中调试可以显示,不调试时,就是显示不出来!!!
</form>
<span id="refundDetail"></span>
</div>

Ajax调用Conrtoller返回数据的更多相关文章

  1. asp.net mvc 使用Ajax调用Action 返回数据【转】

      使用asp.net mvc 调用Action方法很简单. 一.无参数方法. 1.首先,引入jquery-1.5.1.min.js 脚本,根据版本不同大家自行选择. <script src=& ...

  2. 快捷标签和ajax、json返回数据

    <if 判断条件>标签</if><import>标签可以链接外部的样式表,和js<import file="js.util.Array" ...

  3. [转]IE9.0或者360下js(JavaScript、jQuery)不能正确执行(加载),按F12后执行正常;Firefox下ajax的success返回数据data(json、string)无法获取

    兼容问题1: 页面的分享等插件加载不全,并无法点击. 兼容问题2: IE下页面选择器(#id..class.etc.)绑定click事件无法访问到,后台springmvc方法,也无法获取ajax的su ...

  4. EXTJS 资料 Ext.Ajax.request 获取返回数据

    下面是一个登陆页面调用的EXTJS login function,通过 url: '/UI/HttpHandlerData/Login/Login.ashx',获取返回登陆账户和密码! Ext.onR ...

  5. ajax调用WebMethed返回处理请求时出错

    ajax post调用WebMethed报错,返回的信息如下: {“Message”:“处理请求时出错”,“StackTrace”:“”,“ExceptionType”:“”} 查了一下WebMeth ...

  6. 微信小程序调用接口返回数据或提交数据

    由于小程序发起网络请求需要通过 wx.request 文档地址 https://mp.weixin.qq.com/debug/wxadoc/dev/api/network-request.html 习 ...

  7. ajax请求对返回数据data的处理

    1,ajax请求会根据响应头的返回数据类型对返回的数据data变量进行不同的处理 $.get("data/user-permission-submit-" + ddo.manipu ...

  8. ajax调用WebAPI添加数据

    //获取账号名 var Name = document.getElementById("Text1").value;//获取密码 var Pass = document.getEl ...

  9. 关于Laravel中使用response()方法调用json()返回数据unicode编码转换的问题解决

    在网上找了好久没有找到,之后一步一步测试,发现了Laravel还是很强大的,解决方案如下: public function response(){ // 返回json数据 $data = [ 'err ...

随机推荐

  1. 最近使用oracle的笔记和少量的正则表达式

    用户.表空间.表:    一个用户一般给予一个表空间,可以多个用户共同管理一个表空间    一个表空间会有多张表对于权限的控制:    在数据库中在人员菜单与需要浏览的文件之间做权限设置能否浏览,可以 ...

  2. js倒计时代码 适合于促销-倒计时代码

    <div class="tiem_price clearfix fonts" style="margin-top:15px;"> <div c ...

  3. Android 无线调试

    首先保证电脑和手机在统一局域网.并知道手机的局域网 ip1. 用usb线连接手机和电脑,并在电脑终端输入 adb tcpip 5555 adb connect <ip>2. 取消usb连接 ...

  4. Reverse Integer

    Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 public cl ...

  5. 【转】Android Studio系列教程六--Gradle多渠道打包

    原文链接:http://stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/ 由于国内Android市场众多渠道,为了统计每个渠道的 ...

  6. vux 中popup 组件 Mask 遮罩在最上层问题的解决

    1. 问题描述:popup弹出层在遮罩层下面的 2.原因:因为滚动元素和mask遮罩层在同一级,vux框架默认把遮罩层放在body标签下的 3.解决方法:更改一下源码,把mask遮罩层放在popup同 ...

  7. Select查询执行顺序

    链接:http://blog.jobbole.com/55086/ 很多程序员视 SQL 为洪水猛兽.SQL 是一种为数不多的声明性语言,它的运行方式完全不同于我们所熟知的命令行语言.面向对象的程序语 ...

  8. 《C#本质论》读书笔记(15)使用查询表达式的LINQ

    15.1 查询表达式的概念 简单的查询表达式 private static void ShowContextualKeywords1() { IEnumerable<string> sel ...

  9. Extjs DOM操作的几个类

    Extjs提供了非常完善的DOM操作方法,可以方便的操作DOM.另外Extjs还可以方便的查询DOM元素,并把这些DOM元素封装成Ext.Element对象,通过Element对象我们可以操作DOM元 ...

  10. Knockout.js随手记(2)

    计算属性 konckout.js的API文档,写的极为详细和生动,透过MVVM的运作原理,开发时只需专注于定义ViewModel逻辑,不需耗费心力处理TextBox.Select的onchange.o ...