Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用ajax发布复杂的url请求_Javascript_C#_Ajax - Fatal编程技术网

Javascript 如何使用ajax发布复杂的url请求

Javascript 如何使用ajax发布复杂的url请求,javascript,c#,ajax,Javascript,C#,Ajax,我想用这样的字符串向标签打印API发送一篇ajax帖子,但似乎有语法错误或其他错误,请给出一些说明,谢谢 这是用于打印标签的web API 下面是Asp.NETMVC5视图页面中的javascript代码 url如下所示: var urlString = "http://localhost:3112/PrintService?REQUEST_DATA={ "PRINT_REQUEST": {

我想用这样的字符串向标签打印API发送一篇ajax帖子,但似乎有语法错误或其他错误,请给出一些说明,谢谢

这是用于打印标签的web API

下面是Asp.NETMVC5视图页面中的javascript代码

url如下所示:

var urlString = "http://localhost:3112/PrintService?REQUEST_DATA={
                               "PRINT_REQUEST": {
                                    "PRINT_NAME": "TSC TTP-345 (TEST)",
                                    "LABEL_QTY": 1,
                                    "TEMPLATE_PATH": "WD.LAB",
                                    "PRINT_DATA": [
                                                {
                                                    "storage": "",
                                                    "SPEC": "",
                                                    "ITEM": "",
                                                    "QTY": "500",
                                                    "DEMAND": "0",
                                                    "EXP_DATE1": "2021-05-21",
                                                    "EXP_DATE2": "2021-05-21",
                                                    "ALLERGENS": "",
                                                    "WD_DATE": "2019-10-29 23:59:59",
                                                    "WD_USER": "TEST",
                                                    "WD_USER_NAME": "TEST",
                                                    "TCI_LOTNO": "20190522",
                                                    "SHOP_ORDER": "",
                                                    "SHOP_ORDER_ITEM": "",
                                                    "SHOP_ORDER_DESC": "",
                                                    "SPLIT_SFC_COUNT": "",
                                                    "SUP_LOTNO": "",
                                                    "REPRINT": null,
                                                    "PACKCOUNT": "",
                                                    "SFC": "",
                                                    "WEIGHT": "",
                                                    "PCS": "",
                                                    "SKIN_WEIGHT": -500
                                                }
                                            ]
                                         }
                                     }"; 

        $.ajax({
            type: "POST",
            url: urlString,
            data: {
            },
            dataType: 'html',
            success: function (ret) {
                labeldata = ret;
                window.alert("OK");
            },
            error: function (ret) { 
                window.alert(ret);
            }
        })
像这样的ajax:

var urlString = "http://localhost:3112/PrintService?REQUEST_DATA={
                               "PRINT_REQUEST": {
                                    "PRINT_NAME": "TSC TTP-345 (TEST)",
                                    "LABEL_QTY": 1,
                                    "TEMPLATE_PATH": "WD.LAB",
                                    "PRINT_DATA": [
                                                {
                                                    "storage": "",
                                                    "SPEC": "",
                                                    "ITEM": "",
                                                    "QTY": "500",
                                                    "DEMAND": "0",
                                                    "EXP_DATE1": "2021-05-21",
                                                    "EXP_DATE2": "2021-05-21",
                                                    "ALLERGENS": "",
                                                    "WD_DATE": "2019-10-29 23:59:59",
                                                    "WD_USER": "TEST",
                                                    "WD_USER_NAME": "TEST",
                                                    "TCI_LOTNO": "20190522",
                                                    "SHOP_ORDER": "",
                                                    "SHOP_ORDER_ITEM": "",
                                                    "SHOP_ORDER_DESC": "",
                                                    "SPLIT_SFC_COUNT": "",
                                                    "SUP_LOTNO": "",
                                                    "REPRINT": null,
                                                    "PACKCOUNT": "",
                                                    "SFC": "",
                                                    "WEIGHT": "",
                                                    "PCS": "",
                                                    "SKIN_WEIGHT": -500
                                                }
                                            ]
                                         }
                                     }"; 

        $.ajax({
            type: "POST",
            url: urlString,
            data: {
            },
            dataType: 'html',
            success: function (ret) {
                labeldata = ret;
                window.alert("OK");
            },
            error: function (ret) { 
                window.alert(ret);
            }
        })
使用
encodeURI()


您可以创建一个模式,并将其传递到控制器中,如下所示

var url = 'http://localhost:3112/PrintService';

var model = {
                               "PRINT_REQUEST": {
                                    "PRINT_NAME": "TSC TTP-345 (TEST)",
                                    "LABEL_QTY": 1,
                                    "TEMPLATE_PATH": "WD.LAB",
                                    "PRINT_DATA": [
                                                {
                                                    "storage": "",
                                                    "SPEC": "",
                                                    "ITEM": "",
                                                    "QTY": "500",
                                                    "DEMAND": "0",
                                                    "EXP_DATE1": "2021-05-21",
                                                    "EXP_DATE2": "2021-05-21",
                                                    "ALLERGENS": "",
                                                    "WD_DATE": "2019-10-29 23:59:59",
                                                    "WD_USER": "TEST",
                                                    "WD_USER_NAME": "TEST",
                                                    "TCI_LOTNO": "20190522",
                                                    "SHOP_ORDER": "",
                                                    "SHOP_ORDER_ITEM": "",
                                                    "SHOP_ORDER_DESC": "",
                                                    "SPLIT_SFC_COUNT": "",
                                                    "SUP_LOTNO": "",
                                                    "REPRINT": null,
                                                    "PACKCOUNT": "",
                                                    "SFC": "",
                                                    "WEIGHT": "",
                                                    "PCS": "",
                                                    "SKIN_WEIGHT": -500
                                                }
                                           ]
                                         }
                                      };

  $.ajax({
        type: "POST",
        url: url,
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify(model),
        dataType: 'html',
        success: function (ret) {
            labeldata = ret;
            window.alert("OK");
        },
        error: function (ret) {
            window.alert(ret);
        }
    })

在控制器端,您可以传递如下模型

public class PRINTDATA
{
    public string storage { get; set; }
    public string SPEC { get; set; }
    public string ITEM { get; set; }
    public string QTY { get; set; }
    public string DEMAND { get; set; }
    public string EXP_DATE1 { get; set; }
    public string EXP_DATE2 { get; set; }
    public string ALLERGENS { get; set; }
    public string WD_DATE { get; set; }
    public string WD_USER { get; set; }
    public string WD_USER_NAME { get; set; }
    public string TCI_LOTNO { get; set; }
    public string SHOP_ORDER { get; set; }
    public string SHOP_ORDER_ITEM { get; set; }
    public string SHOP_ORDER_DESC { get; set; }
    public string SPLIT_SFC_COUNT { get; set; }
    public string SUP_LOTNO { get; set; }
    public object REPRINT { get; set; }
    public string PACKCOUNT { get; set; }
    public string SFC { get; set; }
    public string WEIGHT { get; set; }
    public string PCS { get; set; }
    public int SKIN_WEIGHT { get; set; }
}

public class PRINTREQUEST
{
    public string PRINT_NAME { get; set; }
    public int LABEL_QTY { get; set; }
    public string TEMPLATE_PATH { get; set; }
    public List<PRINTDATA> PRINT_DATA { get; set; }
}

public class Model
{
    public PRINTREQUEST PRINT_REQUEST { get; set; }
}

公共类PRINTDATA
{
公共字符串存储{get;set;}
公共字符串规范{get;set;}
公共字符串项{get;set;}
公共字符串数量{get;set;}
公共字符串请求{get;set;}
公共字符串EXP_DATE1{get;set;}
公共字符串EXP_DATE2{get;set;}
公共字符串{get;set;}
公共字符串WD_DATE{get;set;}
公共字符串WD_USER{get;set;}
公共字符串WD_USER_NAME{get;set;}
公共字符串TCI_LOTNO{get;set;}
公共字符串存储顺序{get;set;}
公共字符串SHOP_ORDER_ITEM{get;set;}
公共字符串SHOP_ORDER_DESC{get;set;}
公共字符串拆分\u SFC\u计数{get;set;}
公共字符串SUP_LOTNO{get;set;}
公共对象重新打印{get;set;}
公共字符串PACKCOUNT{get;set;}
公共字符串SFC{get;set;}
公共字符串权重{get;set;}
公共字符串PCS{get;set;}
公共整型皮肤重量{get;set;}
}
公共类打印请求
{
公共字符串PRINT_NAME{get;set;}
公共整数标签_数量{get;set;}
公共字符串模板_路径{get;set;}
公共列表打印_数据{get;set;}
}
公共类模型
{
公共PRINTREQUEST PRINT_请求{get;set;}
}

您应该将这个不带URL的字符串放在数据部分,您不能这样使用它。

为什么要将所有数据作为查询字符串传递?您可以创建一个模型,然后在控制器中传递整个模型。谢谢,标签会打印出来,但ajax会转到错误部分并返回ret作为[object object]警告,还有什么我需要注意的吗?但它仍然打印!谢谢删除数据类型:html和see在控制台中从源“”访问url处的XMLHttpRequest已被CORS策略阻止:请求的资源上不存在“访问控制允许源”标头。看起来我应该在ajax中添加一些额外的头信息?不太明白,谢谢。是的,你应该在
PrintService
文件中添加标题
Access Control Allow Origin:
。谢谢你的建议,我应该稍后尝试Vishal modi的模型设计答案。我注意到在问号后的urlString中有一个名为“REQUEST\u DATA=”的参数,所以我可以忽略这个“REQUEST\u DATA”在您的模型设计答案中?谢谢。是的,现在您正在发布整个模型。所以你不需要它。谢谢你对MVC概念的回答,它清晰而有用。