2013-07-29 3 views
0

에 데이터를 POST 요청을 수행하는 방법은 데이터를 다음 게시 할 : URL로JSON POST 요청 - JSON 데이터는 JSON 형식

{ 
    "contactsync": 
     { "rev":4, 
     "contacts":[ 
        { "fields": [ 
           { 
            "value": 
             { 
             "givenName":"dfgheeej", 
             "familyName":"ffftestfff" 
             }, 
            "type":"name", 
            "flags":[], 
            "op":"add" 
           }, 
           { 
            "value":"fffffff", 
            "type":"nickname", 
            "flags":[], 
            "op":"add" 
           }, 
           { 
            "value":"[email protected]", 
            "type":"email", 
            "flags":[], 
            "op":"add" 
           } 
          ], 
        "categories":[], 
        "op":"add" 
        } 
     } 
} 

. (같은 : site.com/anything/add?format=json & wssid = t4764.444 & wssid = some_value & WINDOWID = & R = 776,566,756) 내가 아마도 자바 스크립트를 통해 URL로 데이터 위에 게시하려면 어떻게

? (내가 할 스크립트가 들어있는 HTML 파일을 만들고 싶습니다.)

이 모든 것이 같은 서버에서 발생하지 않을 것이므로 다른 서버의 데이터를 다른 서버에 게시하고 싶습니다.

+0

@ HeinA.Grønnestad : XMLHTTPREQUEST 패턴을 사용하여 정상적인 양식 제출 방법을 시도했지만 작동하지 않았습니다! – Lady

+0

나는 PHP와 자바 스크립트 사이에서 json으로 놀았지만 다른 방법은 주위에 놀았다. 나는 그것이 bity 까다 롭다 고 생각한다. 어쨌든, 여러분은 Json 구조 전체에 큰 따옴표를 넣고 다른 두 개의 쿼트 자국을 이스케이프 처리 한 다음 PHP에서 json을 다시 디코딩 했습니까? –

+0

최신 브라우저는 문자열을 가져올 수있는 ['JSON.stringify()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)를 구현합니다. 표현의 개체,하지만 당신은 내가 그런 방법을 사용하여 최고의 솔루션, 건축 관점에서 확신하지 못합니다. – MasterAM

답변

0

스크립트가 동일한 서버에 있거나 서버가 CORS를 지원하거나 서버가 JSONP를 지원하는 경우 ajax를 사용할 수 있습니다. jQuery를 사용하여이 될 것입니다 :

var data = {"contactsync":{"rev":4,"contacts":[{"fields":[{"value":{"givenName":"dfgheeej","familyName":"ffftestfff"},"type":"name","flags":[],"op":"add"},{"value":"fffffff","type":"nickname","flags":[],"op":"add"},{"value":"[email protected]","type":"email","flags":[],"op":"add"}],"categories":[],"op":"add"}]}}; 
var url = 'site.com/anything/addformat=json&wssid=t4764.444&wssid=some_value&windowid=&r=776566756'; 

$.post(url, JSON.stringify(data), function(response) { 

}); 

당신이 좋아하는 당신은 (단지 원격 주소 및 인쇄 응답에 JSON을 통과) PHP에서 프록시를 작성해야합니다 아약스를 사용할 수없는 경우 :

function post($url, $data) { 
    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    return curl_exec($ch); 
} 

function get_raw_post_data() { 
    if (isset($GLOBALS['HTTP_RAW_POST_DATA'])) { 
     return $GLOBALS['HTTP_RAW_POST_DATA']; 
    } else { 
     return file_get_contents('php://input'); 
    } 
} 

$url = "site.com/anything/addformat=json&wssid=t4764.444&wssid=some_value&windowid=&r=776566756"; 

echo post($url, get_raw_post_data()); 

그런 다음 원격 사이트의 URL 중 insidead는 동일한 서버에서 스크립트를 사용합니다.

+0

다른 원격 서버 (동일한 서버가 아님)에 데이터를 게시하고 싶습니다. – Lady

+0

@ 숙녀 다음 필자가 작성한이 PHP 프록시를 사용하십시오. – jcubic