【问题标题】:Getting error when trying to return value to javascript尝试将值返回给 javascript 时出错
【发布时间】:2017-05-15 17:26:06
【问题描述】:

我试图在成功时将值返回给 dropzone 的 javascript。我使用返回 Json 操作并尝试构建一个 url 以指向另一个视图。我的问题,如何将值返回给 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 Json(new {OrderNumber = orderNumber, JsonRequestBehavior.AllowGet  });

【问题讨论】:

    标签: javascript jquery json asp.net-mvc dropzone.js


    【解决方案1】:

    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}"';
    

    然后将“XXXXX”替换为url字符串中的真实订单号。

    【讨论】:

    • 谢谢。问题的另一部分,我如何在 javascript 中读取该值?
    • 非常感谢。我相信得到它。伙计,我必须在 javascript 方面做得更好。有支持小组吗?大声笑
    • 尝试上述代码时出现新错误。我得到一个数据未定义。知道为什么吗?
    猜你喜欢
    • 1970-01-01
    • 2021-08-06
    • 2023-03-28
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多