我正在开发一个编码PHP-AJAX-Jquery和JSON的项目,需要将一个包含三个输入字段的表单信息发送到一个php文件,该文件将存储数据库中三个字段的信息。 / p>
我的问题是我需要(因为项目规范)我使用Jquery-AJAX和JSON而且我认为我将格式错误的JSON字符串传递给PHP文件,这是应该处理的js电话:
$(document).ready(function(){
$('#ID_formulario').on('submit',function(e) {
e.preventDefault();
var nombre = $('input#ID_nombre');
var email = $('input#ID_email');
if(validaForm(nombre, email)){
var url = $(this).attr('action');
var data = $(this).serializeArray();
var type = $(this).attr('method');
alert(data);
$.ajax({
url:url,
data:data,
type:type,
cache: false,
contentType: "application/x-www-form-urlencoded",
dataType: 'json',
beforeSend: function () {
$("#flash").show();
$("#flash").fadeIn(400).html('<img src="imagen.gif" align="absmiddle"> <span class="loading">Realizando peticion...</span>');
},
error: function(){
alert("error petición ajax");
},
success: function(datos){
$('#result').empty().html(respuesta). fadeIn('slow').delay(5000).fadeOut();
$('#ID_formulario')[0].reset();
$('input#ID_nombre').focus();
$("#flash").hide();
//$("#display").after(html);
//$("#result").append(data);
}
});
}
});
});
我的问题是:如何将有效JSON格式的三个字段的信息发送到php文件?是否有任何jquery功能有帮助?或者是serializeArray()足够吗?
提前感谢。
答案 0 :(得分:1)
您不需要将任何内容作为JSON发送给PHP。只需使用类型发送它:POST并在PHP中读取它。然后将其作为JSON返回以在Javascript中读取。你刚刚在PHP中阅读了$ _POST。我相信你错了你的项目规范,你需要将PHP中的数据作为JSON返回。
这是我的一个项目:
$("document").ready(function(){
$(".js-ajax-php-json").submit(function(){
var data = {
"action": "product"
};
data = $(this).serialize() + "&" + $.param(data);
$.ajax({
type: "POST",
dataType: "json",
url: "response.php",
data: data,
success: function(data) {
$(".the-return").html(
// Read returned JSON. Exammple
"<div class='data-row'><strong>TYPE</strong> " + data["title"]+ "</div>";
);
}
});
return false;
});
});
在PHP中,您可以使用POST并读取数据。
response.php
if (is_ajax()) {
if (isset($_POST["action"]) && !empty($_POST["action"])) { //Checks if action value exists
$action = $_POST["action"];
switch($action) { //Switch case for value of action
case "product": sendValues();
break;
}
}
}
// Function to check if the request is an AJAX request
function is_ajax() {
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}
// Do everything with $_POST's here
function sendValues(){
$return = $_POST;
$return["title"] = 'Something';
$return["json"] = json_encode($return);
echo json_encode($return); // Return JSON formatted data to Javascript.
}