调用多个函数时出现JSON错误
错误 - 未捕获的SyntaxError:位于0的JSON中的意外标记
我在jquery中调用多个函数,但是它给出了错误我已经尝试了很多方法,但是错误得到了改变,但它无法正常工作。
HTML
<div id="div1">
<input type="submit"onclick='Function1()'>
<input type="text" value="Text1" id="input1">
<input type="text" value="Text2" id="input2">
</div>
<div id='div2'></div>
的jQuery
function Function1(){
var input1 = $("#input1").val();
var input2 = $("#input2").val();
var datajson = { "input1" : input1, "input2" : input2 };
var data = "'"+JSON.stringify(datajson)+"'";
Post_Funtion('testpost.php',data,'$("#div2").html(html);')
}
function Post_Funtion(URl,DATA,FUNCTION){
var url = encodeURIComponent(URl);
var data = JSON.parse(DATA);
$.ajax({
type: "POST",
url: url,
data: data,
cache: false,
success: function(html) {
eval(FUNCTION);
}
});
}
答案 0 :(得分:0)
您正在尝试错误地JSON.stringify()
发布数据,然后转身并将其解析回传递给ajax选项。
这整个步骤是不必要的。按原样传递对象,jQuery将从那里处理它
function Function1(){
var input1 = $("#input1").val();
var input2 = $("#input2").val();
var data = { "input1" : input1, "input2" : input2 };
Post_Funtion('testpost.php',data,'$("#div2").html(html);')
}
function Post_Funtion(URl,DATA,FUNCTION){
var url = encodeURIComponent(URl);
$.ajax({
data: DATA,
/* other options the same */
....
}
答案 1 :(得分:0)
您正试图在类似这样的字符串上调用JSON.parse
:
'{"input1": input1, "input2": input2}'
这不是格式良好的JSON。 应删除外部引号。请尝试以下代码:
function Function1(){
var input1 = $("#input1").val();
var input2 = $("#input2").val();
var datajson = { "input1" : input1, "input2" : input2 };
var data = JSON.stringify(datajson) // Removed quotes from JSON
Post_Funtion('testpost.php',data,'$("#div2").html(html);')
}
function Post_Funtion(URl,DATA,FUNCTION){
var url = encodeURIComponent(URl);
var data = JSON.parse(DATA);
$.ajax({
type: "POST",
url: url,
data: data,
cache: false,
success: function(html) {
eval(FUNCTION);
}
});
}
答案 2 :(得分:0)
&#34;&#39;&#34 + JSON.stringify(datajson)+&#34;&#39;&#34 ;; - 删除引号
var data = JSON.stringify(datajson);
在这种情况下,无法查看字符串化和解析对象的原因。请尝试以下方法:
function Function1(){
var input1 = $("#input1").val();
var input2 = $("#input2").val();
var data = { "input1" : input1, "input2" : input2 };
function cb(response){
$("#div2").html(response);
}
Post_Funtion('testpost.php',data, cb)
}
function Post_Funtion(URl,DATA,FUNCTION){
var url = encodeURIComponent(URl);
console.log(DATA);
$.ajax({
type: "POST",
url: url,
data: DATA,
cache: false,
success: FUNCTION
});
}
PS不要使用eval,Why is using the JavaScript eval function a bad idea?