尝试将 return 值设置为 javascript 时出错

Getting error when trying to return value to javascript

我正在尝试 return 一个成功返回到 dropzone 的 javascript 的值。我正在使用 return Json 操作并尝试构建 url 以指向另一个视图。我的问题是,如何将 return 值返回给 javascript 函数并获取该值?

我在尝试查找值时遇到了这样的错误。

Uncaught SyntaxError: Unexpected token u in JSON at position 0
at JSON.parse (<anonymous>)
at u.<anonymous> (Upload:44)
at u.n.emit (dropzone:1)
at dropzone:1

当我的代码是这样的时候:

                        myDropzone.on("queuecomplete",
                            function(data) {
                                this.removeAllFiles();

                                var res = JSON.parse(data);

                                var  url = "@Url.Action("OrderConfirmation","Upload", new
                                       {

                                           OrderNumber =  "45678"
                                       })";


                                window.location.replace(url);

                            });

这是我的return行操作

   return Json(new {OrderNumber = orderNumber, JsonRequestBehavior.AllowGet  });

AllowGet 不应该是返回对象的一部分,它是 Json().

的第二个参数
return Json(new { OrderNumber = orderNumber }, JsonRequestBehavior.AllowGet);

编辑:不太了解 dropzone,但我怀疑 data 已经是一个对象,因此 JSON.parse() 可能是不必要的。无论如何,data.OrderNumberres.OrderNumber应该是订单号。

您不能在 javascript 中使用 @Url.Action,因为它会在 javascript 被命中之前在服务器端执行。你需要做类似

的事情
var url = '/Upload/OrderConfirmation/' + data.OrderNumber;

或者如果您确实需要为您构建的 URL,请放入一个虚拟查询字符串参数

var url = '@Url.Action("OrderConfirmation", "Upload", new { OrderNumber = XXXXX}"';

然后用 url 字符串中的真实订单号替换 "XXXXX"。