【问题标题】:Ajax post to C# codeAjax 发布到 C# 代码
【发布时间】:2013-10-01 02:33:32
【问题描述】:

编辑

所以在环顾四周后,我猜我发现了“正确的方式”。它使用 JSON.stringify 的组合并创建一个模型,如 in this post 所述。我仍然不明白为什么原来的方式不起作用,因为它与帖子中提到的第一个选项完全一样。哦,谢谢大家。

所以我的控制器中有一个非常简单的函数,它是我的 C# MVC 项目的一部分

public string myMethod(String something){
 return "This String"
}

这是我在 javascript 中的 ajax post 调用

.ajax({
 type: "POST",
 url: "myController/myMethod",
 data: data,
 dataType: text,
 success: function(results){
  console.log(results),
 }
});

当我执行 ajax 调用时,它确实返回了“这个字符串”,但是当我让它返回类似这样的东西时

 public string myMethod(String something){
  string ret = "This String = " + something 
 return ret
}

它给了我“这个字符串 =”,但是参数没有被添加。我是否传递了错误的数据?还是我缺少什么?

【问题讨论】:

  • 我认为您复制粘贴的内容有误。两种 C# 方法都返回相同的字符串。
  • 你是说在c#代码中你得到something变量null?
  • ajax 请求中的data 对象是什么样的?
  • @MuctadirDinar 我认为它是空的,因为当我在成功复出的控制台中将它打印出来时,它是未定义的。
  • @AndreiV {"firstData": aData, "SecondData": data2} 其中 aData 和 data2 是变量

标签: c# javascript jquery ajax


【解决方案1】:

C# 方法是一个GET,所以一切都搞混了。

您应该让 C# 方法响应 POST 方法

[HttpPost]
public string myMethod(String something){
    return "This String"
}

或 ajax 一个 GET 请求(不过,您必须更改调用方式):

.ajax({
 type: "GET",
 url: string.Format("myController/myMethod?something={0}", data),
 dataType: text,
 success: function(results){
  console.log(results),
 }
});

【讨论】:

  • 我尝试添加 httPost 并确保我发送的数据中的参数和方法期望的参数相同,但仍然没有运气
【解决方案2】:

尝试返回 JSON 结果:

[HttpPost]
public JsonResult returnthis(string text)
{
   return Json(new { Success = text},JsonRequestBehavior.AllowGet);
}

【讨论】:

  • 您不需要使用JsonRequestBehavior.AllowGet 来代替POST
猜你喜欢
  • 1970-01-01
  • 2023-03-25
  • 2012-09-16
  • 2013-09-03
  • 1970-01-01
  • 1970-01-01
  • 2018-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多