我的ajax代码如下所示:
jQuery(document).ready(function($) {
$(".respond").submit(function(event){
..................//something here
request = $.ajax({
url: "/admin/check.php",
type: "post",
data: {formData:serializedData,submit_type:submit_name},
datetype: JSON
});
request.done(function (response, textStatus, jqXHR){
console.log(response);
});
request.fail(function (jqXHR, textStatus, errorThrown){
console.error(
"The following error occured: "+
textStatus, errorThrown
);
});
request.always(function () {
$inputs.prop("disabled", false);
});
event.preventDefault();
});
});
当我使用像这样的PHP代码时
var_dump($_POST["formData"]);
它给出了这样的结果
"string(400) "user_edit=submit&user_id=1 ..........
"
我想将userid存储在php变量中,如此
$username=......
但是当我尝试这样做时
$username=$_POST["formData"]["userid"]
它给出了错误
“警告:非法字符串偏移'user_edit' C:\ Program Files(x86)\ Ampps \ www \ admin \ check.php 在线 5
string(1)“u”“
我想知道如何获得该用户ID的值或类似的东西。
答案 0 :(得分:0)
正如您在转储formData时看到的那样,它是一个字符串!你想访问它的一个元素,因为它是一个数组 - >错误。
更好的方法可能是在表单中包含“submit_type”并且只有
data: serialisedFormData
作为您的发布数据。
答案 1 :(得分:0)
参数formData
是序列化字符串。因此,在发送AJAX调用的服务器端页面上,您必须使用PHP parse_str function解析序列化字符串。所以在php页面上你应该写一些东西:
<?php
$formdata = $_POST['formData'];
// For example I suppose that formData has values something like : first=value&arr[]=foo+bar&arr[]=baz
//then
parse_str($formdata);
echo $first; // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz
parse_str($str, $output);
echo $output['first']; // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz
?>
答案 2 :(得分:0)
<form name="ajaxform" id="ajaxform" action="ajax-form-submit.php" method="POST">
First Name: <input type="text" name="fname" value =""/> <br/>
Last Name: <input type="text" name="lname" value ="" /> <br/>
Email : <input type="text" name="email" value=""/> <br/>
</form>
//callback handler for form submit
$("#ajaxform").submit(function(e)
{
var postData = $(this).serializeArray(); //note here serialize it before post it to server
var formURL = $(this).attr("action");
$.ajax(
{
url : formURL,
type: "POST",
data : postData,
success:function(data, textStatus, jqXHR)
{
//data: return data from server
},
error: function(jqXHR, textStatus, errorThrown)
{
//if fails
}
});
e.preventDefault(); //STOP default action
e.unbind(); //unbind. to stop multiple form submit.
});
$("#ajaxform").submit(); //Submit the FORM
然后尝试在你的服务器php文件上print_r($ _ POST),我认为它适合你