在提交之前显示在表格中输入的值作为表格

时间:2018-02-14 05:17:16

标签: javascript jquery ajax codeigniter-3

首先,我在ajax中没有太多天赋所以请在回答时考虑一下。在这里,我希望在提交之前获取我在表格中插入的所有值,但遗憾的是我没有得到我想要的结果。到目前为止,我已经这样做了。请看看。

 <script>
 var form_data={ agent_name: $('#agent_name').val(),
                    type: $('input[name="type"]').val(),
                    number: $('#number').val(),
                    quantity: $('#quantity').val()
                  }

    $.ajax({
    type: 'POST',
    url: '<?php echo base_url();?>admin_control/ajax_data',
    data: form_data,
    dataType:"json", //to parse string into JSON object,
    success: function(data){ 
        if(data){
            var len = data.length;
            alert(len);
            var txt = "";
            if(len > 0){
                for(var i=0;i<len;i++){
                    if(data[i].agent_name && data[i].type){
                        txt += $('#table').append('<tr class="item-row"><td><input type="hidden" id="add_type" name="add_type[]" value="super">Super</td><td><input type="hidden" id="add_amount" name="add_amount[]" value="10">745</td><td><input type="hidden" class="add_quantity" id="add_quantity" name="add_quantity[]" value="10">10</td><td name="add_amount" id="add_amount">100</td><td><input type="checkbox" class="add_checkbox" name="layout" id="add_checkbox" value="1" checked></td></tr>');

                    }
                }
                if(txt != ""){

                    $("#table").append(txt).removeClass("hidden");
                }
            }
        }
    },
    error: function(jqXHR, textStatus, errorThrown){
        alert('error: ' + textStatus + ': ' + errorThrown);
    }
});
return false;
</script>  

这里我想将form_data的值传递给我写过的表,我们如何传递它并强制使用ajax中的url,同时使用它会得到像{{1}这样的错误}}

这是我的控制器

error: parsererror: SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

2 个答案:

答案 0 :(得分:2)

Ajax帖子将为post值调用控制器方法。 ajax代码通常是正确的,但你还没有定义url。

 url: '',

首先定义一个方法(例如:HomeController),然后设置ajax url参数,如

url: '@Url.Action("Save","Home")'url: 'Save/Home'

  [HttpPost]
  public JsonResult Save(string agent_name, string type , int number,int quantity)
  {
    // return json
  }

注意

  

您使用方法类型从表单发送的数据类型必须是   同样的。

答案 1 :(得分:1)

好吧,只是为了给你提供一些提示:Ajax调用可能如下所示:

$_POST

php脚本应真正处理传入信息(作为<?php echo json_encode($_POST); ?> 数组传递)到其他一些最终将作为JSON字符串回显的数据。

这只是用于测试的echodata.php的一个简单版本:

length

修改

虽然您已修复了URL属性并在服务器上添加了“控制器”,但您的Ajax成功函数仍然需要它无法获得的功能。您的PHP脚本提供了一个JSON字符串,该字符串将被解析为JavaScript 对象 数组。该对象将不具有您的成功函数尝试使用的json属性。相反,您应该寻找for属性。

因此,data.json.agent_name, data.json.number循环没有意义,您可以直接使用data.json.type.append()(等)属性。您当前的let test = Js.Promise.(resolve("Hello") |> then_(_obj => raise(Not_found))); let ker = Js.Promise.(test |> then_((_) => "found" |> Js.log |> resolve) |> catch((_) => "Not found" |> Js.log |> resolve)); 也只会在表格中添加静态字符串。当然,这应该改为使用新接收的值。