2012-07-12 2 views
12

Я пытаюсь использовать JSON для инициирования запроса POST в API.Использование запроса JSON POST

Я нашел пример кода, и, прежде чем я получаю слишком далеко, я хотел, чтобы получить эту работу, но я застрял ...

<html> 
<head> 
<script type="text/javascript"> 
function JSONTest() 
{ 
requestNumber = JSONRequest.post(
    "https://example.com/api/", 
    { 
     apikey: "23462", 
     method: "example", 
     ip: "208.74.35.5" 
    }, 
    function (requestNumber, value, exception) { 
     if (value) { 
      processResponse(value); 
     } else { 
      processError(exception); 
     } 
    } 
); 
} 
</script> 
</head> 
<body> 

<h1>My JSON Web Page</h1> 


<button type="button" onclick="JSONTest()">JSON</button> 

</body> 
</html> 

Это .html файл, который я работает в хромированном состоянии. Ничего не происходит, когда я нажимаю кнопку ...

Я думаю, что у меня отсутствует кусок javascript, который интерпретирует ответ JSON и может отображаться? в противном случае любой другой совет?

+0

Я был под впечатлением JSON был подмножеством Javascript ...? и поэтому Javascript может запустить его без проблем? – GK1667

+0

JSON - это формат обмена данными. Современные браузеры могут это понять, но более старым браузерам нужна библиотека для преобразования строк JSON в объекты JavaScript. Я бы рекомендовал использовать библиотеку, такую ​​как jQuery, чтобы помочь вам в этом, так как это также решит некоторые проблемы совместимости браузера для более старых клиентов. – Phil

+0

Большинство современных браузеров имеют доступный объект JSON, но JSONRequest не является изначально доступным объектом или функцией на объектах окна или документа. – kinakuta

ответ

27

Ниже приведен пример использования jQuery. Надеюсь, что это помогает

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<title>My jQuery JSON Web Page</title> 
<head> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script type="text/javascript"> 

JSONTest = function() { 

    var resultDiv = $("#resultDivContainer"); 

    $.ajax({ 
     url: "https://example.com/api/", 
     type: "POST", 
     data: { apiKey: "23462", method: "example", ip: "208.74.35.5" }, 
     dataType: "json", 
     success: function (result) { 
      switch (result) { 
       case true: 
        processResponse(result); 
        break; 
       default: 
        resultDiv.html(result); 
      } 
     }, 
     error: function (xhr, ajaxOptions, thrownError) { 
     alert(xhr.status); 
     alert(thrownError); 
     } 
    }); 
}; 

</script> 
</head> 
<body> 

<h1>My jQuery JSON Web Page</h1> 

<div id="resultDivContainer"></div> 

<button type="button" onclick="JSONTest()">JSON</button> 

</body> 
</html> 

процесс отладки Firebug

Firebug XHR debug process

+1

Это отличный пример! Моя проблема заключается в том, что его получение отправляется в раздел «ошибка запроса». Я заменил все на нет данных, но он все равно не сработает. Я связался с этим API успешно и получил обратную связь с помощью функции curl PHP и ввода пользователем apikey, method и ip на html-странице, которая отправляется на php. Любые другие идеи, как я мог бы выполнить это и получить ответ с помощью javascript? – GK1667

+0

Привет. Я обновил свой ответ выше, просто изменил обработчик ошибок, который должен дать вам дополнительную информацию об ошибке. Обычно, если этот обработчик ошибок называет его обычно своего рода ошибкой transport/cors, как упоминал Джейсон. Попробуйте обновить код и посмотреть, что такое новая ошибка. Я настоятельно рекомендую установить Fiddler или использовать Google Chrome F12 Debug, чтобы вы могли видеть «точно», что происходит «под капотом». Не стесняйтесь возвращаться ко мне :) – Phil

+0

Большое спасибо. Я действительно ценю, что ты придерживаешься меня на этом. Я работал над тем, чтобы получить это вместе в течение нескольких дней и даже не могу подключиться! Во всяком случае, я пробовал дополнение к коду. Он возвращает только «0». У меня работает firebug, я новичок в его использовании, поэтому, если у вас есть какие-либо просьбы о том, какую часть вы хотите, чтобы я исследовал, я с радостью сделаю это! – GK1667

0

Современные браузеры в настоящее время не реализуют JSONRequest (насколько я знаю), поскольку это только проект прямо сейчас. Я нашел кого-то, кто внедрил его в качестве библиотеки, которую вы можете включить на свою страницу: http://devpro.it/JSON/files/JSONRequest-js.html (обратите внимание, что в ней есть несколько зависимостей).

В противном случае вам может понадобиться использовать другую библиотеку JS, такую ​​как jQuery или Mootools.

Смежные вопросы