这是我的观点。
$(function () {
$('#buttonx').on("click", function (e) {
e.preventDefault();
$.ajax({
url: 'Ficha/VerificarPatrocinador',
contentType: 'application/json; charset=utf-8',
type: 'GET',
dataType: 'json',
data: {i: 100036},
success: function (data) {
$(data).each(function (index, item) {
//$('#NomePatr').append(item.Nome)
$("#NomePatr").val(item.Nome);
});
}
});
});
});
</script>
这是我在我的控制器上的动作。
public JsonResult VerificarPatrocinador(int i)
{
var db = new FMDBEntities();
db.Configuration.ProxyCreationEnabled = false;
db.Configuration.LazyLoadingEnabled = false;
var consulta = db.Tabela_Participante.Where(p => p.ID_Participante == i);
return Json(consulta.
Select(x => new
{
Nome = x.Nome
}).ToList(), JsonRequestBehavior.AllowGet);
}
我是Ajax / Jquery的新手,当我排除参数时它是好的,但是,当我尝试将数据:{i:100036}放入我的脚本中时,我的操作中的参数。它不起作用。为什么会这样? 控制器很好。该参数甚至通过,但我无法在我的视图中返回此结果。 谢谢。
答案 0 :(得分:1)
在控制器方法上使用[HttpPost]属性
[HttpPost]
public JsonResult VerificarPatrocinador(int i)
{
//Write Your Code
}
并将ajax类型属性从“GET”更改为“POST”并使用JSON.stringify。还要仔细检查网址。你的ajax应该是这样的
$(function () {
$('#buttonx').on("click", function (e) {
e.preventDefault();
$.ajax({
url: 'Ficha/VerificarPatrocinador',
contentType: 'application/json; charset=utf-8',
type: 'POST',
dataType: 'json',
data: JSON.stringify({i: 100036}),
success: function (data) {
$(data).each(function (index, item) {
//$('#NomePatr').append(item.Nome)
$("#NomePatr").val(item.Nome);
});
}
});
});
});
希望它能帮到你
答案 1 :(得分:0)
我认为@StephenMuecke可能会有所作为,因为我能够用新项目重现(预期)逻辑。
首先要确定的是代码出错的地方:服务器或客户端。
尝试使用Visual Studio调试器,并在VerificarPatrocinador
中放置断点。然后运行客户端代码以查看断点是否被命中。如果成功,这意味着问题出在客户端。
从那里使用Web浏览器的调试器来确定发生了什么。对.fail
的返回结果使用.ajax
函数,以确定HTTP调用是否出现故障。以下是一些可用于分析故障的示例代码:
.fail(function (jqXHR, textStatus, errorThrown) {
alert(textStatus);
});
有关详细信息,请查看http://api.jquery.com/jquery.ajax/
答案 2 :(得分:0)
ajax成功时更改以下代码
$.each(data, function (index, item) {
$("#NomePatr").val(item.Nome);
});
因为当你获取数据作为数组,数组或集合的对象时,你可以使用这种语法进行迭代,然后你可以传递给var,dom ......等等你想要显示或采用的地方。
jQuery.each()
表示$(selector).each()
可以用于dom元素,如下面的语法:例如
<ul>
<li>foo</li>
<li>bar</li>
</ul>
<script>
$("li").each(function( index ) {
console.log( index + ": " + $( this ).text() );
});
</script>
使用GET工作正常,但是如果它不安全,因为用户在提交查询字符串时可以看到数据。
帖子有
使用HttpPost提交数据的关键点
所以我希望你理解并改变ajax类型:&#39; GET&#39;到&#39; POST&#39;如果你愿意的话。
答案 3 :(得分:-1)
更改此行
url: 'Ficha/VerificarPatrocinador'
为:
url: '/Ficha/VerificarPatrocinador'
因为当您使用此网址"Ficha/VerificarPatrocinador"
时,它会从网址current url + Ficha/VerificarPatrocinador
调用API,因此它不是正确的网址。