javascript - 将json数据从JS每个循环传递到JS函数时输入错误意外结束
问题描述
我在表中有一个 jquery foreach 附加列表。我想要的是传递我从 ajax 成功函数中获得的完整对象。但是当我尝试将 Object 作为参数传递给不同的 JS 函数时,该参数会意外结束输入。
这是我的附表:
$.ajax({
type: "post",
url: "@Url.Content("~/Estimate/GetOffsetLetterHeadCost")",
data: $('#OffLetterHeadForm').serialize(),
datatype: "json",
traditional: true,
success: function(data) {
var Json = data;
$.each(Json, function(index, obj) {
var row = '<tr>' + '<td><b>' + obj.VendorName + '</b></td>'
+ '<td><label id="machineId' + index + '">'
+ obj.MachineName + ' </label></td>'
+ '<td><input type="button" value="Order" id="btn'
+ index + '"onclick="SaveOffsetOrder('
+ JSON.stringify(obj) + ')"/></td></tr>';
$("#AllVendorsList").append(row);
});
}
});
<table id="AllVendorsList"></table>
function SaveOffsetOrder(obj) {
// do something with obj
}
在输入关闭时,我得到了输入的意外结束。请帮忙。我是 javascript 新手
解决方案
问题是 JSON.stringify(obj) 不会像 \" 这样转义引号,结果是无效的 html。
我建议使用 jQuery onclick 绑定,这样您就不必对 obj 进行字符串化然后解析它。
解决方案:https ://jsfiddle.net/xpvt214o/452188/
var Json = [{
VendorName: 'kia',
MachineName: 'ceed'
}, {
VendorName: 'dacia',
MachineName: 'logan'
}];
$.each(Json, function(index, obj) {
var row = '<tr>' + '<td> <b>' + obj.VendorName + '</b></td>' + '<td><label id="machineId' + index + '">' + obj.MachineName + '</label></td>' + '<td><input type="button" value="Order" id="btn' + index + '"/></td></tr >';
$("#AllVendorsList").append(row);
$("#btn" + index).on('click', $.proxy(SaveOffsetOrder, this, obj));
});
function SaveOffsetOrder(obj) {
console.info(obj);
}
<table id="AllVendorsList"></table>
推荐阅读
- webrtc - 具有完美协商的 WebRTC - 移动 Safari 上的回滚不起作用
- git - 在没有强制推送或删除权限的情况下重写远程 git 分支
- puppeteer - 如何在 puppeteer js 中填写日期
- c++ - 如何在 C++ 中使用字符串重复?
- r - R函数(循环?)为数据集中的每一列创建一个新图
- scikit-learn - 如何使用 scikit learn 在随机森林分类器中指定输入和输出数据的格式
- javascript - PayPal 无法完成交易
- javascript - 使用 JavaScript 删除网站上所有客户端存储的数据
- python - ValueError:DataFrame 构造函数未正确调用- 拟合 SparsePCA 后
- python - 如何在pygame中使用两个输入获得正确的逻辑真值表结果,而不必在正确的时间按下两个输入