2013-04-10 4 views
0

$ .ajax 메소드를 통해 PHP에 양식 값을 전달하려고합니다. 나는 HTML에서 양식을 다음 있습니다 :ajax 연관 배열을 PHP associative array에 건네기

<form> 
<p> 
    <label for="login">User ID:</label> 
    <input type="text" name="login" id="login" value="user name"> 
</p> 

<p> 
    <label for="password">Password:</label> 
    <input type="password" name="password" id="password" value="password"> 
</p> 
</form> 

와 아약스 :

$("form").submit(function(event) { 
var formInput = $('form').serialize();// tried with serializeArray() also 

var request = $.ajax({ 
    type: "POST", 
    url:"../some.php", 
    data: {formInput:formInput}, 
    statusCode: { 
       404: function() { alert("file not found");}} 

}); 

PHP :가 인쇄 콘솔에서

<? 
$data = $_POST['formInput']; 
$data = array(); 
parse_str($_POST, $data); 
print_r($data); 
?> 

: 내가 원하는 것은 대한

(
    [Array] => 
) 

했다 $ 데이터는 연관 배열이됩니다 :

$data = array(
     'login' => 'foo' 
     'password' => 'bar' 
     ); 

하지만 $ 데이터가 문자열로 취급되고있는 것 같다 ... 사전에 감사합니다!

답변

2

사용 data: $('form').serializeArray() 대신 data: {formInput:formInput},

그리고 다음 PHP 측에서, $_POST 당신이 원하는 데이터 만입니다. 대신이의

+0

응답 해 주셔서 감사합니다. 이 작동합니다. 나는 데이터를 추측한다 : {formInput : formInput}, 배열에 이미 직렬화 된 배열을 다시 넣는다. 감사! – dts316

1

:

$("form").submit(function(event) { 
var formInput = $('form').serialize();// tried with serializeArray() also 

var request = $.ajax({ 
    type: "POST", 
    url:"../some.php", 
    data: {formInput:formInput}, 
    statusCode: { 
       404: function() { alert("file not found");}} 
}); 

사용이 :

$("form").submit(function(event) { 
var formInput = $('form').serialize();// tried with serializeArray() also 

var request = $.ajax({ 
    type: "POST", 
    url:"../some.php", 
    data: formInput, 
    statusCode: { 
       404: function() { alert("file not found");}} 
}); 
+0

죄송합니다 ..하지만 코드에서 차이가 보이지 않습니다 ... 나는 무엇인가 내려다보고 있습니까? – dts316

+0

데이터 파라메터 – Oussama

+0

이 라인을 변경했습니다 :'data : {formInput : formInput} ','data : formInput,' – Oussama

2

당신은 json_decode에서 대신 객체의 연관 배열을 원하는 지정해야합니다

json_decode($data, true); 

당신은 수도 또한 이것을해야합니다 -

$('form').serializeArray(); 
+0

. serializeArray() 나를 위해 해줬습니다. 감사! – dts316

1

우리가 원하는 것은 디코딩 할 수있는 json 객체로 직렬화하는 것입니다. THIS 플러그인을 사용하여 .serializeObject에 액세스하십시오.

$("form").submit(function(event) { 
var formInput = $('form').serializeObject(); 
formInput = JSON.stringify(formInput); 

var request = $.ajax({ 
    type: "POST", 
    url:"../some.php", 
    data: {formInput:formInput}, 
    statusCode: { 
       404: function() { alert("file not found");}} 

}); 

그런 다음 PHP 측에서 당신은 내가 내 문제가 무엇인지 알아 냈어요 큰 반응에서 쉽게

$data = json_decode($_POST['formInput'], true); 
+0

빠른 응답을 보내 주셔서 감사합니다. 그러나 이제는 "
"만 인쇄합니다. null로 표시됩니다. – dts316

+0

당신 말이 맞아요. 나는 나의 대답을 업데이트했다. – Fresheyeball

+0

빠른 응답을 보내 주셔서 다시 한 번 감사드립니다. 이것은 제가 찾고 있던 것 이상이었습니다. 정말 apprciated !! – dts316

0

JSON을 디코딩 할 수있다. POST를 제출할 때 배열에 배열을 넣고있었습니다.

다음 아약스 코드 : 그것은 내가 원하는 것을 정확하게 인쇄 cosole에

<? $data = $_POST; 
    print_r($data); ?> 

:

$("form").submit(function(event) { 
var formInput = $('form').serialize();// tried with serializeArray() also 

var request = $.ajax({ 
type: "POST", 
url:"../some.php", 
data: {formInput:formInput}, 
statusCode: { 
      404: function() { alert("file not found");}} 
}); 

가 변경되었습니다 :

$("form").submit(function(event) { 
var formInput = $('form').serializeArray(); 

var request = $.ajax({ 
type: "POST", 
url:"../some.php", 
data: formInput, 
statusCode: { 
      404: function() { alert("file not found");}} 
}); 

그리고 PHP가 변경되었습니다

Array 
(
[login] => admin 
[password] => qwerty123! 
) 

빠른 응답을 보내 주셔서 감사합니다.