私はすでにこの問題に数時間を費やしていて、解決策を見つけることができません。私はウェブページ(kohana 3.2)で次のサービスを利用しています:
public function action_test() {
$data = file_get_contents('php://input');
$json = json_decode($data);
$t = array();
$t[Utils::$KEY_LOGIN] = isset($json->login) ? $json->login : arr::get($_POST, Utils::$KEY_LOGIN, null);
$t[Utils::$KEY_PASSWORD] = isset($json->password) ? $json->password : arr::get($_POST, Utils::$KEY_PASSWORD, null);
$returned = array("success" => true);
$returned = array_merge($returned, array("login" => $t[Utils::$KEY_LOGIN]));
$this->auto_render = FALSE;
ob_clean();
$this->request->headers['Content-Type'] = "application/json";
$this->response->body(json_encode($returned));
}
そして、サービスに尋ねるフォーム:
<html>
<head>
<meta charset="utf-8" />
<script type="text/javascript" src="//media/js/jquery-1.6.2.min.js"> </script>
<script type="text/javascript" src="//media/js/jquery-ui.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#login_sb").click(function() {
//var action = 'http://www.aaa.pl/clientservices/test';
var action = "http://localhost/aaa/clientservices/test";
$.ajax({
url : action,
type : "post",
dataType : "json",
cache : "false",
timeout: 8000,
data : {
'login': 'login@wp.pl'
},
success : function(data) {
alert(data);
if(data.success) {
alert(data.login);
}
}
});
//
return false;
});
});
</script>
</head>
<body>
<form id="login_form" method="post">
<input type="submit" value="login" id="login_sb"/>
</form>
</body>
ローカルサービスに電話すると、すべて問題なく動作します。しかし、Ajaxでリモートで呼び出そうとすると、機能しません。フォームを手動で送信した場合にも機能します。助けてください、何が悪いのか新しいアイデアがないからです。