【问题标题】:Can't send data with ajax to a asp.net mvc controller无法使用 ajax 将数据发送到 asp.net mvc 控制器
【发布时间】:2016-03-28 17:16:56
【问题描述】:

您好,我在通过 ajax 向我的 asp.net 控制器发送数据时遇到问题。当我尝试在 Opera 检查器中查看问题时,我在 jquery 行 8720 上收到服务器 500 错误。 xhr.send( ( s.hasContent && s.data ) || null ); 这是我的代码示例: html:

      <div class="top-row">
            <div class="field-wrap">

                    <label>
                        <span class="req"></span>
                    </label>
                    <input class="text-center" type="text" required autocomplete="off"  name="url" id="url" />

            </div>


          </div>



          <button type="submit" class="button button-block" name="sendIT" id="sendIT">Save</button>



        </div>

Javascript:

var button1 = document.getElementById("sendIT");
function LoginButton1OnClick() {
    var text = $('#url').val();
    alert(text);
    $.ajax({
        type: 'POST',
        url: '/Book/TestBook',
        crossDomain: true,
        data: text,
        success: function () {
            alert('success');
        }, error: function (data) {
            alert("Error");  
        }
    });
}
button1.addEventListener("click", LoginButton1OnClick);

C#:

[HttpPost]在此输入代码 public ActionResult TestBook(string test) { var s1 = test; return View(); }

【问题讨论】:

  • 试试数据:JSON.stringify({teste: text})
  • 是的,问题在于您似乎只能出于某种原因发送对象

标签: asp.net ajax asp.net-mvc cross-domain


【解决方案1】:

您需要将数据作为对象发布

$.ajax({
    type: 'POST',
    url: '/Book/TestBook',
    crossDomain: true,
    data: {test: text},
    success: function () {
        alert('success');
    }, error: function (data) {
        alert("Error");  
    }
});

【讨论】:

  • 是的,它有效...不知道您必须只发送对象。谢谢
【解决方案2】:

您收到的错误 500 是因为您的 ajax POST 请求中的“数据”格式错误。您需要将数据作为对象发送:

Javascript

    $.ajax({
        type: 'POST',
        url: '/Home/TestBook',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: JSON.stringify({test: text }),
        success: function (data) {
            alert('success');
        }, error: function (data) {
            alert("Error");
        }
    });

请注意,javascript 中的“test”参数需要与控制器中的名称完全相同。

【讨论】:

  • 您的 ajax 调用最终会落入您的控制器吗?你调试了吗?
  • 抱歉,我忘记删除旧 javascript 文件中的最后一个括号,您的解决方案正在运行。但我仍然想知道为什么我的解决方案也不会将数据发送到控制器。你能详细说明一下吗
  • 查看我的更新答案。我创建了一个测试项目来模拟您的案例。
  • 不明白为什么在这里投反对票。请您解释一下好吗?
  • 我没有投反对票....无论如何,尽管该功能是向控制器发送数据,但我稍后仍会收到错误警报。你知道为什么
猜你喜欢
  • 1970-01-01
  • 2016-07-22
  • 1970-01-01
  • 2021-08-23
  • 2016-11-15
  • 2016-02-07
  • 1970-01-01
  • 2018-06-01
  • 1970-01-01
相关资源
最近更新 更多