gpt4 book ai didi

javascript - 如何将 JavaScript 字符串传递给 Controller ​​?

转载 作者:行者123 更新时间:2023-11-28 12:12:52 25 4
gpt4 key购买 nike

我目前正在开发一个项目,但我已经被困在这里一天了。总之,我的问题仅取决于我的项目的StartPage

我什至在 StackOverflow 上查阅了无数指南,但毫无结果。

<小时/>

HTML

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Starter</title>

<style>
p {
margin-top: 30%;
margin-left: 20%;
margin-right: 20%;
font-family: Arial;
font-size: 25px;
text-align: center;
}

#Code {
border: 2px solid black;
}
</style>



</head>
<body>
<h1>249765876358312345655</h1>

@using (Html.BeginForm())
{
<p>
Enter a Machine Code:
<br />
<input id="Code"
name="Code"
pattern=""
size="30"
spellcheck="false"
title="Maschine Code"
value="">
<input type="hidden" value="26" name="projectId" />
</p>


<script>
let x = document.getElementById("Code");
x.addEventListener('input', function (event) {
x = document.getElementById("Code").value;
let vars = x;
let digits = vars.match(/^\d{13}(\d{6})\d{2}$/)[1];
let stringDigits = digits.toString();

if (stringDigits.length == 6 && vars.length == 21) {

window.location.href = '/home/Kontrolle';
document.getElementById("Code").innerHTML = "";
localStorage.setItem("Code_Kurz", stringDigits);


$.ajax({
url: "@Url.Action("StartPage")",
type: "GET",
data: JSON.stringify(stringDigits),
dataType: "string",
contentType:"StartPage/json",
success: function (data) { alert("Succ: " + data); },
error: function (xhr, status, error) {
var errorMessage = xhr.status + ': ' + xhr.statusText;
console.log("ERROR: " + errorMessage);},
});

}
});


</script>
}
</body>


</html>

总而言之:h1 标签是此代码女巫被 ReGex 过滤的示例 -> 最终结果:123456

数字123456保存在stringDigits中。现在我想将 stringDigits 传递给 Controller ​​。

<小时/>

Controller

namespace Qualitätskontrolle.Controllers
{
public class HomeController : Controller
{
[HttpGet]
public IActionResult StartPage(string Code)
{
Debug.WriteLine(Code);
return View();
}
}
}

StartPage Controller 中应该出现该字符串。

结果应该在输出窗口中:123456,但我只从 JavaScript 中收到错误消息。

最佳答案

这里有几个问题。

  • 您正在将 View 返回到 ajax 调用。您可能应该返回 Json("Content", JsonRequestBehavior.AllowGet)
  • 您正在设置dataType:JSON.stringify(stringDigits)。您可以删除此位
  • 您正在设置数据:“string”。它应该是 data: { Code: stringDigits },因为 StartPage 需要名为 Code 的参数作为输入。
  • 您正在 AJAX window.location.href = '/home/Kontrolle' 之前进行重定向(不确定原因)
  • 错误处理程序使用未在该上下文中定义的变量data。与成功处理程序不同,错误处理程序不接收 data 作为输入。以下是正确错误处理的示例:

    error: function (xhr, status, error) {
    var errorMessage = xhr.status + ': ' + xhr.statusText;
    console.log("ERROR: " + errorMessage);
    }

这里有几个简单的例子:ASP.NET MVC controller actions that return JSON or partial html

public ActionResult StartPage(string code) 
{
return Json(new { foo="bar" });
}

在 JS 中:

$.getJSON(url, { code: stringDigits },
function(data) {
alert(data.foo);
}
);

关于javascript - 如何将 JavaScript 字符串传递给 Controller ​​?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57053609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com