2013-03-17 4 views
0

다음 코드가 있지만 ajax를 사용하여 전달 된 객체의 내용에 액세스 할 수 없습니다. 내가 뭘 놓치고 있니?PHP로 AJAX를 사용하는 POST OBJECT

$(".submit").click(function(){ 
    var fruits = {"fruits" : ["apples","banana","oranges"]}; 
    var cars = {"cars" : ["BMW", "Honda", "Toyota"]}; 
    var my_Obj = fruits + cars; 
    mydata = JSON.stringify(my_Obj); 
    $("#mydata").val(mydata); 
    $.ajax({ 
    url: "add.php", 
    type: "POST", 
    data: { 
     name: $('#name').val(), 
     Address: $('#Address').val(), 
    my_obj : $mydata 
    }, 
    datatype: "json", 
    success: function (status) { 
     if (status.success == false) { 
     alert("Failure!"); 
     } else { 
     alert("Success!"); 
     } 
    } 
    }); 
}); 


    <form id="json" method="post" action="add.php"> 
    <input type="text" name="name" id="name" value=""> 
    <input type="text" name="address" id="Address" value=""> 
    <input type="text" name="mydata" id="mydata" hidden> 
    <input type="submit" name="submit" id="submit" class="submit" value="send"> 
    </form> 

은 add.php

$new_post['id'] = $_POST['id']; 
$new_post['name'] = $_POST['name']; 
$new_post['address'] = $_POST['address']; 
$new_post['my_obj'] = $_POST['mydata']; 
print_r ($new_post); 

[my_obj] 표시 [개체 개체] 개체 개체]. 도움 주셔서 감사합니다. ') (submit.click'

1, 양식 입력을 클릭하여 제출하실 수 있습니다, 그래서 오히려보다 .submit() 방법을 사용합니다 :

+1

,하지만 당신은'$의 mydata을로 사용하려고

귀하의 경우에는

가와 AJAX 호출에 my_obj의 부품을 교체 '변수의 이름이 아닙니다. PHP 변수는'$'앞에 붙는 반면, JavaScript에서는 변수 이름의 일부분으로 다른 문자이므로 정의되지 않은 변수를 사용합니다. 이것을 디버깅 할 때 서버로 보내지는 실제 POST는 무엇입니까? Firebug와 같은 브라우저 디버깅 도구에서이를 캡처하여 통과되는 것을 확인할 수 있습니다. – David

+0

또한 $ mydata 및 mydata는 잠재적 인 (의도적 인) 글로벌 누출 일 수 있습니다. 일단 다른 문제를 분류하면,'fruits + car'가 당신이하는 것을하지 않는다는 것을 알게 될 것입니다. jQuery를 사용하고 있기 때문에, 그 시점에서 jQuery.extend (http://api.jquery.com/jQuery.extend/)를 읽는 것이 좋습니다. –

답변

0

내가 볼 것을 잘못 몇 가지가 있습니다

$('form').submit(function(){ 
}); 

2, 양식은 add.php에서 당신이 필요로하는, 당신의 .submit() 방법

$('form').submit(function(){ 
    // all of your code 
    return false; 
}); 

3 당신이하지 않는 return false를 제출한다 json 정보 반환 : add.php

$new_post['status'] = true; // or false depending on what your trying to do 

echo json_encode($new_post); 

4, 당신은 status를 설정하지 않는 것은 희망이 당신에게 시작을 줄 것이다.

* * 참고 :이 계정은 제출 양식을 통해 원시 객체를 보낼 수 없습니다 add.php

0

에 보내는 바르을 고려하지 않고는 먼저 텍스트를 평평하게해야합니다. 이것은 직렬화를 통해 이루어지며 가장 간단한 방법은 클라이언트와 대부분의 서버 언어에서 모두 이해할 수 있기 때문에 JSON을 사용하는 것입니다. my_obj : JSON.stringify (내 데이터) 당신은`mydata`라는 변수가

+0

여전히 동일한 결과를 가짐 [object Object] [object Object] – user2099032

관련 문제