2012-04-09 2 views
1

jsonery getJSON 메서드를 사용하여 원격 서버에 json-rpc 요청을 보내려고합니다. 여기 jsonery getJSON을 통한 Json RPC 요청

json_string=JSON.stringify(obj); 
var jqxhr = $.getJSON("https://91.199.226.106/ssljson.php?jsoncallback=?", json_string, function(data){ 
    alert("aaaaaa"); 
}); 
jqxhr.error(function() { alert("error"); }) 

내 JSON-RPC 문자열의 예는 다음과 같습니다 : 여기에 내 코드 여기

{"jsonrpc":"2.0","method":"merchant_check","params":[{"hostID":150999,"orderID":116,"amount":"150","currency":"051","mid":15001038,"tid":15531038,"mtpass":"12345","trxnDetails":""}],"id":116} 

그리고 오류가 나는 얻을 수있다 :

{"jsonrpc":"2.0","id":null,"error":{"code":-32600,"message":"Invalid JSON-RPC 2.0 request error (-32600)"}} 

내가 무엇을 얻을은`t 문제. 내가 뭔가 잘못하고 있는거야? 어쩌면 PHP와 jquery 요청을 보내야합니까? 그럼 어떻게해야합니까?

+0

'http : // stackoverflow.com/questions/9988733/json-rpc-error-32600' 및 여기에 다른 (중복) 질문을 닫거나 다시 쓰지 않고이 질문을 한 이유는 무엇입니까? http : // stackoverflow.com/questions/9871972/json-rpc-string' –

+0

JSONP 태그가 제거 된 jQuery 태그가 추가되었습니다. –

답변

1

이름으로 getJSON 당신은 당신이 좋아하는 POST를 사용할 필요가 JSON-RPC를 사용하려면 GET 요청을 보낼 것이라고 :

var json_string = JSON.stringify(obj); 
$.post('https://91.199.226.106/ssljson.php', json_string, function(response) { 
    // process response 
}, 'json'); 

하지만 페이지가 같은 서버에있는 경우에만 동작합니다, CORS를 사용하지 않는 한

0

은 메시지 봉투가 JSON-RPC 2.0 스펙에 따라 유효하지 않거나 JSON 자체에 구문 분석 오류가 있다고 가정합니다.

실제로 불행히도 많은 서비스가 훨씬 다양한 상황에서이 오류를 반환합니다. (예 : 누락 된 인증 토큰 등)

예문 메시지의 특정 문제가 있습니까?

웹 서비스에서 GET 요청을 수락합니까? (대신 POST이되어야합니까?)

실제로 웹 서비스에 ?jsoncallback=? 비트가 필요합니까? 이는 일반적으로 JSON-RPC가 아닌 JSONP 요청 때문입니다. 이 서비스는 실제 JSON-RPC 오류 상태를 반환하므로 GET 매개 변수가 필요한 경우 정말 놀라실 것입니다 (웹 서비스 구성에 따라 다름)는 봉투의 일부로 해석 될 수 있습니다. 잘못된 JSON-RPC 요청!

merchant_check은 유일한 매개 변수로 하나 이상의 트랜잭션 배열을 사용합니까? 그렇지 않다면 params에 대한 구문이 잘못되었습니다. 일부 서비스는 paramsArray으로 원하고 일부 서비스는 Object이되기를 원합니다. 어떤 경우에 해당되는지 SMD/설명서를 참조하십시오.

서비스 요청시 mime-type으로 text/json (또는 다른 내용)이 필요할 수 있습니다.

권장되는 방법 :

이러한 문제를 방지하려면, 당신은 아마 Dojo 툴킷에서 제공하는 것과 같은, 목적 내장 JSON-RPC 라이브러리를 사용하여 시작하고 웹 - 발표 한 SMD를 사용한다 서비스가있는 경우 서비스. (저는 JSON-RPC 메시지를 직접 작성하는 것에 반대합니다).

+0

'POST '에 대한 추가 비트 –