Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.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创建JSON请求数据_Javascript_Json_Html - Fatal编程技术网

使用javascript创建JSON请求数据

使用javascript创建JSON请求数据,javascript,json,html,Javascript,Json,Html,我需要使用从html表单获取的输入为JSON请求创建数据。我想要生成的数据格式如下所示 { "applicationName":"Tesing", "cpuCount":"12", "hostdescName":"localhost", "maxMemory":"0", "maxWallTime":"0", "minMemory":"0", "nodeCount":"1", "processorsPerNode":"12", "ser

我需要使用从html表单获取的输入为JSON请求创建数据。我想要生成的数据格式如下所示

    {
   "applicationName":"Tesing",
   "cpuCount":"12",
   "hostdescName":"localhost",
   "maxMemory":"0",
   "maxWallTime":"0",
   "minMemory":"0",
   "nodeCount":"1",
   "processorsPerNode":"12",
   "serviceDesc":{
      "inputParams":[
         {
            "dataType":"input",
            "description":"my input",
            "name":"myinput",
            "type":"String"
         },
         {
            "dataType":"input",
            "description":"my input",
            "name":"myinput",
            "type":"String"
         }
      ],
      "outputParams":[
         {
            "dataType":"output",
            "description":"my output",
            "name":"myoutput",
            "type":"String"
         },
         {
            "dataType":"output",
            "description":"my output",
            "name":"myoutput",
            "type":"String"
         }
      ]
   }
}
    $(document).ready(function(){
        var inputCount = 0;
        var outputCount = 0;

        $("p1").live("click", function(){
            inputCount++;
            $(this).after("<br/>");
            $(this).after("Input Name         *:" +
                    "<input type=&quot;text&quot; id=&quot;inputName" + inputCount + "&quot; name=&quot;inputName" + inputCount + "&quot; value=&quot;echo_input&quot; size=&quot;50&quot;><br/>");

            $(this).after("Input Type         *:" +
                    "<input type=&quot;text&quot; id=&quot;inputType" + inputCount + "&quot; name=&quot;inputType" + inputCount + "&quot; value=&quot;String&quot; size=&quot;50&quot;><br/>");
        });

        $("p2").live("click", function(){
            $(this).after("Output Name         *:" +
                    "<input type=&quot;text&quot; id=&quot;outputName" + outputCount + "&quot; name=&quot;outputName" + outputCount + "&quot; value=&quot;echo_output&quot; size=&quot;50&quot;><br/>");
            $(this).after();

            $(this).after("Output Type         *:" +
                    "<input type=&quot;text&quot; id=&quot;outputType" + outputCount + "&quot; name=&quot;outputType" + outputCount + "&quot; value=&quot;String&quot; size=&quot;50&quot;><br/>");
        });

        $('[name="btn2"]').click(function(){
            var appName = $("#appName1").val();
            var exeuctableLocation = $("#exeuctableLocation1").val();
            var scratchWorkingDirectory = $("#scratchWorkingDirectory1").val();
            var hostName = $("#hostName1").val();

            var projAccNumber = $("#projAccNumber1").val();
            var queueName = $("#queueName1").val();
            var cpuCount = $("#cpuCount1").val();
            var nodeCount = $("#nodeCount1").val();
            var maxMemory = $("#maxMemory1").val();

            var serviceName = $("#serviceName1").val();
            var inputName1 = $("#inputName1").val();
            var inputType1 = $("#inputType1").val();
            var outputName = $("#outputName1").val();
            var outputType = $("#outputType1").val();

            var jsonRequest = {};
            jsonRequest["applicationName"] = appName;
            jsonRequest["cpuCount"] = cpuCount;
            jsonRequest["hostdescName"] = hostName;
            jsonRequest["maxMemory"] = maxMemory;
            jsonRequest["maxWallTime"] = ""; //TODO
            jsonRequest["minMemory"] = ""; //TODO
            jsonRequest["nodeCount"] = nodeCount;
            jsonRequest["processorsPerNode"] = ""; //TODO

            var inArray = [];
            for(var j=0; j<inputCount; j++) {
                var input = {};
                input["dataType"] = "input";
                input["description"] = "empty";
                input["name"] = $("#inputName" + j+1).val();
                input["type"] = $("#inputType" + j+1).val();

                inArray[j] = input;
            }

            var outArray = new Array();
            for(var j=0; j<outputCount; j++) {
                var output = {};
                output["dataType"] = "output";
                output["description"] = "empty";
                output["name"] = $("#outputName" + j+1).val();
                output["type"] = $("#outputType" + j+1).val();

                outArray[j] = output;
            }

            var serviceDesc = {};
            serviceDesc["inputParams"] = inArray;
            serviceDesc["outputParams"] = outArray;

            jsonRequest["serviceDesc"] = serviceDesc;


            alert("printing inArray");
            alert(inArray.toSource().toString());
            alert(JSON.stringify(jsonRequest));


            $.ajax({
                beforeSend: function(x) {
                    if (x && x.overrideMimeType) {
                        x.overrideMimeType("application/j-son;charset=UTF-8");
                    }
                },
                type: "POST",
                dataType: "json",
                contentType: "application/json;charset=utf-8",
                url: "http://localhost:7080/airavata-registry-rest-services/registry/api/applicationdescriptor/build/save/test",
                data: jasonRequest
            }).done(function( msg ) {
                        alert( "Data Saved: " + msg );
                    });

        });
    });
</script>
我的代码如下所示

    var jasonRequest = {};
    jasonRequest["applicationName"] = appName;
    jasonRequest["cpuCount"] = cpuCount;
    jasonRequest["hostdescName"] = hostName;
    jasonRequest["maxMemory"] = maxMemory;
    jasonRequest["maxWallTime"] = ""; //TODO
    jasonRequest["minMemory"] = ""; //TODO
    jasonRequest["nodeCount"] = nodeCount;
    jasonRequest["processorsPerNode"] = ""; //TODO

    var inArray = new Array();
    for(var j=0; j<inputCount; j++) {
        var input = {};
        input["dataType"] = "input";
        input["description"] = "empty";
        input["name"] = $("#inputName" + j+1).val();
        input["type"] = $("#inputType" + j+1).val();

        inArray[j] = input;
    }

    var outArray = new Array();
    for(var j=0; j<outputCount; j++) {
        var output = {};
        output["dataType"] = "output";
        output["description"] = "empty";
        output["name"] = $("#outputName" + j+1).val();
        output["type"] = $("#outputType" + j+1).val();

        outArray[j] = output;
    }

    var serviceDesc = {};
    serviceDesc["inputParams"] = inArray;
    serviceDesc["outputParams"] = outArray;

    jasonRequest["serviceDesc"] = serviceDesc;


    alert("printing inArray");
    alert(inArray.toSource().toString());
    alert(JSON.stringify(jasonRequest));
[编辑] 我的代码如下所示

    {
   "applicationName":"Tesing",
   "cpuCount":"12",
   "hostdescName":"localhost",
   "maxMemory":"0",
   "maxWallTime":"0",
   "minMemory":"0",
   "nodeCount":"1",
   "processorsPerNode":"12",
   "serviceDesc":{
      "inputParams":[
         {
            "dataType":"input",
            "description":"my input",
            "name":"myinput",
            "type":"String"
         },
         {
            "dataType":"input",
            "description":"my input",
            "name":"myinput",
            "type":"String"
         }
      ],
      "outputParams":[
         {
            "dataType":"output",
            "description":"my output",
            "name":"myoutput",
            "type":"String"
         },
         {
            "dataType":"output",
            "description":"my output",
            "name":"myoutput",
            "type":"String"
         }
      ]
   }
}
    $(document).ready(function(){
        var inputCount = 0;
        var outputCount = 0;

        $("p1").live("click", function(){
            inputCount++;
            $(this).after("<br/>");
            $(this).after("Input Name         *:" +
                    "<input type=&quot;text&quot; id=&quot;inputName" + inputCount + "&quot; name=&quot;inputName" + inputCount + "&quot; value=&quot;echo_input&quot; size=&quot;50&quot;><br/>");

            $(this).after("Input Type         *:" +
                    "<input type=&quot;text&quot; id=&quot;inputType" + inputCount + "&quot; name=&quot;inputType" + inputCount + "&quot; value=&quot;String&quot; size=&quot;50&quot;><br/>");
        });

        $("p2").live("click", function(){
            $(this).after("Output Name         *:" +
                    "<input type=&quot;text&quot; id=&quot;outputName" + outputCount + "&quot; name=&quot;outputName" + outputCount + "&quot; value=&quot;echo_output&quot; size=&quot;50&quot;><br/>");
            $(this).after();

            $(this).after("Output Type         *:" +
                    "<input type=&quot;text&quot; id=&quot;outputType" + outputCount + "&quot; name=&quot;outputType" + outputCount + "&quot; value=&quot;String&quot; size=&quot;50&quot;><br/>");
        });

        $('[name="btn2"]').click(function(){
            var appName = $("#appName1").val();
            var exeuctableLocation = $("#exeuctableLocation1").val();
            var scratchWorkingDirectory = $("#scratchWorkingDirectory1").val();
            var hostName = $("#hostName1").val();

            var projAccNumber = $("#projAccNumber1").val();
            var queueName = $("#queueName1").val();
            var cpuCount = $("#cpuCount1").val();
            var nodeCount = $("#nodeCount1").val();
            var maxMemory = $("#maxMemory1").val();

            var serviceName = $("#serviceName1").val();
            var inputName1 = $("#inputName1").val();
            var inputType1 = $("#inputType1").val();
            var outputName = $("#outputName1").val();
            var outputType = $("#outputType1").val();

            var jsonRequest = {};
            jsonRequest["applicationName"] = appName;
            jsonRequest["cpuCount"] = cpuCount;
            jsonRequest["hostdescName"] = hostName;
            jsonRequest["maxMemory"] = maxMemory;
            jsonRequest["maxWallTime"] = ""; //TODO
            jsonRequest["minMemory"] = ""; //TODO
            jsonRequest["nodeCount"] = nodeCount;
            jsonRequest["processorsPerNode"] = ""; //TODO

            var inArray = [];
            for(var j=0; j<inputCount; j++) {
                var input = {};
                input["dataType"] = "input";
                input["description"] = "empty";
                input["name"] = $("#inputName" + j+1).val();
                input["type"] = $("#inputType" + j+1).val();

                inArray[j] = input;
            }

            var outArray = new Array();
            for(var j=0; j<outputCount; j++) {
                var output = {};
                output["dataType"] = "output";
                output["description"] = "empty";
                output["name"] = $("#outputName" + j+1).val();
                output["type"] = $("#outputType" + j+1).val();

                outArray[j] = output;
            }

            var serviceDesc = {};
            serviceDesc["inputParams"] = inArray;
            serviceDesc["outputParams"] = outArray;

            jsonRequest["serviceDesc"] = serviceDesc;


            alert("printing inArray");
            alert(inArray.toSource().toString());
            alert(JSON.stringify(jsonRequest));


            $.ajax({
                beforeSend: function(x) {
                    if (x && x.overrideMimeType) {
                        x.overrideMimeType("application/j-son;charset=UTF-8");
                    }
                },
                type: "POST",
                dataType: "json",
                contentType: "application/json;charset=utf-8",
                url: "http://localhost:7080/airavata-registry-rest-services/registry/api/applicationdescriptor/build/save/test",
                data: jasonRequest
            }).done(function( msg ) {
                        alert( "Data Saved: " + msg );
                    });

        });
    });
</script>
$(文档).ready(函数(){
var inputCount=0;
var outputCount=0;
$(“p1”).live(“单击”,函数(){
inputCount++;
$(此)。在(“
”)之后; $(此).after(“输入名称*:”+ “
”; $(此).after(“输入类型*:”+ “
”; }); $(“p2”).live(“单击”,函数(){ $(this).after(“输出名称*:”+ “
”; $(this.after(); $(this).after(“输出类型*:”+ “
”; }); $('[name=“btn2”]')。单击(函数(){ var appName=$(“#appName1”).val(); var execuctableLocation=$(“#execuctableLocation1”).val(); var scratchWorkingDirectory=$(“#scratchWorkingDirectory1”).val(); var hostName=$(“#主机名1”).val(); var projAccNumber=$(“#projAccNumber1”).val(); var queueName=$(“#queueName1”).val(); var cpuCount=$(“#cpuCount1”).val(); var nodeCount=$(“#nodeCount1”).val(); var maxMemory=$(“#maxMemory1”).val(); var serviceName=$(“#serviceName1”).val(); var inputName1=$(“#inputName1”).val(); var inputType1=$(“#inputType1”).val(); var outputName=$(“#outputName1”).val(); var outputType=$(“#outputType1”).val(); var jsonRequest={}; jsonRequest[“applicationName”]=appName; jsonRequest[“cpuCount”]=cpuCount; jsonRequest[“hostdescName”]=主机名; jsonRequest[“maxMemory”]=maxMemory; jsonRequest[“maxWallTime”]=“”;//TODO jsonRequest[“minMemory”]=“”;//TODO jsonRequest[“nodeCount”]=nodeCount; jsonRequest[“processorsPerNode”]=“”;//TODO var-inArray=[];
对于(var j=0;j什么是
inputCount
outputCount
?它们似乎是零或NaN或其他什么,所以您得到的是空数组。但是,您的代码仍然会打印
“inputParams”:[]
而不是
“inputParams”:“


要获得一个好的输出(不是你的应用程序需要它,只是为了调试),你可以使用的第三个参数。

sidenote:Jason到底是谁?使用JSON以避免混淆。它应该是这样工作的。你确定inArray和outArray是正确填充的数组吗?(也可以使用[]而不是new Array(),但这不应该是错误)@TimS。他指的一定是JSON Statham。什么是
inputCount
outputCount
?如果未定义,循环将不起任何作用。此外,使用
inArray.push(input)
代替
inArray[j]=input
@bfavaretto我在单击按钮时动态创建输入字段。因此我使用计数器跟踪单击。我编辑了我以前的文章以获得完整代码。问题是由于数组未正确填充。谢谢。