ajax的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax的问题相关的知识,希望对你有一定的参考价值。

$.ajax(
type: 'get',
url: '../../Controllers/EvaluateController.cs/index2',
data: 'param:' + checkedids + '&itype='+thetype+'',
cache: false,
success: function (data)
//投票成功后返回s
if (data == 'success')
// play(val);
alert("投票成功!");

else if(data=="fail")
alert("投票失效!!");


);
各位看看我这个是什么问题,我要传到后台的controller里面,调用一个方法,再返回一个操作结果,可就是进不到那个方法里面
public ActionResult index2(string param)

// string Ids = Request.Form["checkedids"];
string Ids = param;
string a = Ids.Substring(0, Ids.Length - 1);
string[] CheckIds = a.Split(',');
for (int i = 0; i < CheckIds.Length; i++)

Guid id = new Guid(CheckIds[i]);
EvaluateScoreInfo item = new EvaluateScoreInfo();
EvaluateNormScore normScore = _EvaluateNormScoreService.GetItem(id);
item.RateEveluateMemberID = new Guid("4e89f844-d223-47d3-96d5-f2289603a3c2");
item.Sore = Convert.ToDecimal(normScore.Score);
item.Created = DateTime.Now;
item.EveluateMemberID = LoginedUser.UserId;
item.EvaluateNormID = normScore.EvaluateNormID;
item.RalateID = item.Id;
item.Answer = normScore.Answer;
item.EvaluateTypeValue = Convert.ToInt32(Request.Form["hidtype"]);
_EvaluateScoreInfoService.Save(null, item);
return View("success");


return View("fail");
// return "fail";


后面这个方法是这么写的,注意这是mvc模式啊

参考技术A 您好:AJAX方法如果想调用aspx页面的后台.cs里面的方法,首先必须保证两个条件:一、确保方法为public 并且是static的。第二要在方法上面加上[webmethod].确保是服务。 参考技术B url对吗?
data: 'param:' + checkedids + '&itype='+thetype+'',对吗

你那个是struts1还是struts2追问

这个不太清楚,怎么看啊,我就是简单的应用一个ajax,制定到的index2是个方法名字,

追答

我觉得你的url应该是错了,
再一个如果是struts1的话,后台接值要这么写:
String s=request.getParameter("param");
String itype=request.getParameter("itype");
如果是struts2的话,后台接值要这么写
private String param; //如果param不是数组的话
private String[] param //如果param是数组的话
private String itype;
之后是get和set方法

本回答被提问者采纳

AJAX跨域问题

完美解决AJAX跨域问题

我看到过很多人不愿意去正视ajax所存在的技术瓶颈,其实AJAX更应该是Ajax而不是AJAX,突出第一个A是想强调其实AJAX发扬的是一种异步传输的方法,而不是具体到底使用了哪种技术
 

从AJAX诞生那天起,XMLHttprequest对象不能跨域请求的问题就一直存在。这似乎是一个很经典的问题了。是由于javascript的同源策略(这里不作深入探讨)所导致。

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Ajax跨域问题</title>
    <script type="text/javascript" src="" id="getAspx">
    </script>
    <script type="text/javascript">
        function get(url) {
            var obj = document.getElementById("getAspx");
            obj.src = url;
            (obj.readStatus == 200)
            {
                alert(responseVal);//如果成功,会弹出Dylan
            }
        }
        function query() {
            get(getDemo.aspx);
        }
    </script>
</head>
<body>
<input type="button" value="Ajax跨域测试" onclick="query();"/>
</body>
</html>


getDemo.aspx后台代码:

复制代码 代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace LearnJS
{
    public partial class getDemo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write("var responseVal=‘Dylan‘");
        }
    }
}


这个方法又叫做ajaj或者ajax without xmlHttprequest,把x换成了j,是因为使用了<script>标签而没有用到xml和xmlHttprequest的缘故。这种方法似乎有点“另类”,哈哈。

那现在我们就看看,有了jQuery之后,如何来解决ajax的跨域问题:

复制代码 代码如下:

<html>
<head>
<title>JQuery学习</title>
<script src="jquery-1.4.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
    var oBtnTest = $("#btnTest");
    oBtnTest.click(function(){
        oBtnTest.disabled = true;   
        var oResult = $("#result");
        oResult.html("loading").css("color","red");
        jQuery.getScript("http://www.jb51.net/test/js.txt",
        function(){           
            oResult.html("name:" + Dylan.name + "<br/>email:" + Dylan.email).css("color","black");           
            oBtnTest.disabled = false;           
        });        
    });   
});   
</script>
</head>
<body>
<button id="btnTest">BtnTest</button>
<div id="result"></div>
</body>
</html>

远程服务器端js.txt中的内容为:
var Dylan= {name:"Dylan",email:[email protected]}

笔者感觉这种方式更加简洁。呵呵。当然,读者可以根据实际情况,任意选择实现方式。

怎么样,其实很简单吧,我看到过很多人不愿意去正视ajax所存在的技术瓶颈,其实AJAX更应该是Ajax而不是AJAX,突出第一个A是想强调其实AJAX发扬的是一种异步传输的方法,而不是具体到底使用了哪种技术。

其实,在json数据格式之后,有一种更牛X的“jsonp”,也可以实现ajax的跨域通信。其实jsonp不是一种数据格式,只是对我介绍的第二种方式做了改进。从jQuery1.2 版本开始,jQuery 拥有对 JSONP 回调的本地支持。

Ajax跨域查询完美解决通过$.getJSON()实现

以上是关于ajax的问题的主要内容,如果未能解决你的问题,请参考以下文章

ajax初级问题,重谢!

如何解决ajax跨域问题

Ajax常见的问题

一个简单的ajax问题

AJAX跨域问题

ThinkPHP 中使用 IS_AJAX 判断原生 JS 中的 Ajax 出现问题