Javascript 无法将数组项作为数据参数传递-内部服务器错误

Javascript 无法将数组项作为数据参数传递-内部服务器错误,javascript,c#,ajax,asp.net-mvc,Javascript,C#,Ajax,Asp.net Mvc,我试图使用ajax从自定义js脚本调用c#mvc控制器方法,但它似乎不接受数组项作为ajax中的参数 我试图将它们分配给一个非数组变量,结果成功了,但我需要将它们作为数组元素传递 public async Task 500(内部服务器错误)请尝试将POST更改为GET,然后添加以下内容: return Json(new { Url = redirectUrl }, JsonRequestBehavior.AllowGet); 也改变了: public async Task<JsonRes

我试图使用ajax从自定义js脚本调用c#mvc控制器方法,但它似乎不接受数组项作为ajax中的参数

我试图将它们分配给一个非数组变量,结果成功了,但我需要将它们作为数组元素传递


public async Task 500(内部服务器错误)

请尝试将
POST
更改为
GET
,然后添加以下内容:

return Json(new { Url = redirectUrl }, JsonRequestBehavior.AllowGet);
也改变了:

public async Task<JsonResult> CallEngineAsync(int id, string command)
公共异步任务调用ngineasync(int-id,string命令)
请尝试将
POST
更改为
GET
,然后添加以下内容:

return Json(new { Url = redirectUrl }, JsonRequestBehavior.AllowGet);
也改变了:

public async Task<JsonResult> CallEngineAsync(int id, string command)
公共异步任务调用ngineasync(int-id,string命令)
最后是某种作用域问题:setInterval()中使用的变量必须在同一作用域(?)中声明,而且由于超时,p(计数器)始终设置为最终值方式,而且c#方法需要进行一次更改才能正确获取参数:

调用ngineasync([FromBody]int-id,[FromBody]string命令)的公共异步任务 { 字符串路径=Server.MapPath(“/PluginDLLs/”); 字符串输出=等待EngineBroker.CallEngine(命令、路径、AppDomain.CurrentDomain); 会话[“输出”+id]=输出; 返回输出; }

$(“.p-container”).find(“.p”).each(函数()
{
var confi=$(this.find(#command”).attr(“value”);
var间隔=1000*确认替换(/\D/g');
if(确认包括(“间隔”)和间隔>0)
{
var id=$(this.attr(“数据插件id”);
var输出=$(this.find(#“+id)
window.setInterval(函数()
{
$.ajax(
{
url:“主页/调用的Neasync”,
数据:“id=”+id+”&命令=”+confi,
传统的:是的,
键入:“GET”,
成功:功能(数据)
{
html(“
”+数据+”); //window.location.href=data.Url }, }); },间隔); } });
最后是某种作用域问题:setInterval()中使用的变量必须在同一作用域(?)中声明,而且由于超时,p(计数器)始终设置为最终值方式,而且c#方法需要进行一次更改才能正确获取参数:

调用ngineasync([FromBody]int-id,[FromBody]string命令)的公共异步任务 { 字符串路径=Server.MapPath(“/PluginDLLs/”); 字符串输出=等待EngineBroker.CallEngine(命令、路径、AppDomain.CurrentDomain); 会话[“输出”+id]=输出; 返回输出; }

$(“.p-container”).find(“.p”).each(函数()
{
var confi=$(this.find(#command”).attr(“value”);
var间隔=1000*确认替换(/\D/g');
if(确认包括(“间隔”)和间隔>0)
{
var id=$(this.attr(“数据插件id”);
var输出=$(this.find(#“+id)
window.setInterval(函数()
{
$.ajax(
{
url:“主页/调用的Neasync”,
数据:“id=”+id+”&命令=”+confi,
传统的:是的,
键入:“GET”,
成功:功能(数据)
{
html(“
”+数据+”); //window.location.href=data.Url }, }); },间隔); } });
仍在获取:GET 500(内部服务器错误)
localhost:44381/Home/CallEngineAsync?id=115&command=test
更像是您的合同,在
EngineBroker.CallEngine
yep,您应该添加所有参数,或者预定义它们,如:
public async Task CallEngineAsync(int id=0,string command=“test”)
它现在没有给出错误,但似乎也没有传递参数值检查此输入值,或添加测试数据:
数据:{id:1234,command:“test”},
然后重试。仍然获取:GET 500(内部服务器错误)
localhost:44381/Home/CallEngineAsync?id=115&command=test
更像是您的合同,在
EngineBroker.CallEngine中可能会发生其他VISE空引用异常。CallEngine
yep,您应该添加所有参数,或预定义它们,如:
公共异步任务CallEngineAsync(int id=0,string command=“test”)
它现在没有给出该错误,但似乎也没有传递参数值检查此输入值,或添加测试数据:
数据:{id:1234,命令:“test”},
,然后重试。