【发布时间】:2016-08-03 04:05:07
【问题描述】:
我正在尝试传递一个类似于此的 JSON 对象:
{"service": "AAS1", "sizeTypes":[{"id":"20HU", "value":"1.0"},{"id":"40FB","2.5"}]}
请注意:在 sizeTypes 中,数组中一共有大约 58 个项。
当用户单击提交按钮时,我需要能够将对象发送到 PHP 脚本以运行 UPDATE 查询。这是应该将 JSON 发送到 PHP 脚本的 javascript:
$('#addNewSubmit').click(function()
{
var payload = {
name: $('#addservice').val();
sizeTypes: []
};
$('input.size_types[type=text]').each(function(){
payload.sizeTypes.push({
id: $(this).attr('id'),
value: $(this).val()
});
});
$.ajax({
type: 'POST',
url: 'api/editService.php',
data: {service: payload},
dataType: 'json',
success: function(msh){
console.log('success');
},
error: function(msg){
console.log('fail');
}
});
});
使用上面的点击函数,我试图将对象发送到下面的 php 脚本,它位于 api/editService.php 中:
<?php
if(isset($_POST['service']))
{
$json = json_decode($_POST['service'], true);
echo $json["service"]["name"] . "<br />";
foreach ($json["service"]["sizeTypes"] as $key => $value){
echo $value["value"] . "<br />";
}
}
else
{
echo "Nooooooob";
}
?>
我还没有 UPDATE 查询,因为我什至不确定我是否正确传递了 JSON。在 javascript click 函数中,您会看到 SUCCESS 和 ERROR 函数。我所产生的只是 Chrome 控制台中的 ERROR 函数。
我不确定错误出在哪里,是 JavaScript 还是 PHP。
为什么我只能在AJAX帖子中产生错误函数?
编辑
我在 ajax 调用中去掉了 dataType,并将 JSON.stringify 添加到数据中:
$.ajax({
type: 'POST',
url: 'api/editService.php',
data: {servce: JSON.stringify(payload)},
success: function(msg){
console.log('success');
},
error: function(msg){
console.log('fail'), msg);
}
});
在 PHP 脚本中,我尝试了这个:
if(isset($_POST['service'))
{
$json = json_decode($_POST['service'], true);
foreach ($json["service"]["sizeTypes"] as $key => $value){
$insert = mysqli_query($dbc, "INSERT INTO table (COLUMN, COLUMN, COLUMN) VALUES (".$json["service"] . ", " . "$value["id"] . ", " . $value["value"]")");
}
}
else
{
echo "noooooob";
}
通过此更新,我可以触发成功消息,但仅此而已。我无法运行查询。
【问题讨论】:
-
您可能想要登录
msg而不是'fail'。 -
即:
console.log('fail:', msg); -
并且没有理由在你的PHP中使用
json_decode(),$_POST变量不会包含json。 -
我发布了一个答案,错误可能是您正在回显 html 但 ajax 期待 json (dataType: 'json')
-
@HoodCoderMan 您收到错误可能是因为这条线。回声 $json["service"]["name"].您在给定的示例数组字符串中没有任何名称键。
标签: javascript php json ajax