所以我有这个:
<span><a class="deleteComment" data-bind="'id':1 , 'pointer': 2" href="/delete-comment/@response.getId">delete</a></span>
如果我也有这个javascript:
$.ajax({
url: "someurl",
type: "post",
contentType: "application/json",
data: JSON.parse($(this).data("bind")),
success: function(response){
...
},
error: function(){ }
});
我该怎么做才能让ajax中的“数据”只是一个JSON对象?
现在当我检查我发送的内容时,它不是JSON - 这非常烦人!
答案 0 :(得分:3)
您的data-bind
属性不是有效的JSON。在JSON中,对象必须用花括号括起来,字符串和属性名称必须用双引号引用,而不是单引号。
<span><a class="deleteComment" data-bind='{"id":1 , "pointer": 2}' href="/delete-comment/@response.getId">delete</a></span>
另外,你不应该致电JSON.parse()
。当jQuery的.data()
方法注意到属性的值是有效的JSON时,它会自动解析它。
由于您希望data:
参数是JSON字符串,因此需要调用JSON.stringify()
将对象转换回JSON($.ajax
将对象转换为URL编码的字符串)
答案 1 :(得分:1)
如果你不使用括号,它将只是字符串
<span><a class="deleteComment" data-bind='{"id":1 , "pointer": 2}' href="/delete-comment/@response.getId">delete</a></span>