我必须创建一个JSON对象,该对象相当于使用此Ajax代码片段创建的JSON对象:
$.ajax({
type : "POST",
url : "?",
dataType: "json",
data : "username=" + encodeURIComponent($('input[name="username"]').val()) + "&password=" + encodeURIComponent($('input[name="password"]').val()) + "&antiForgeryToken=d98188e0f56bafa75180591e38d189ee",
success : function(json) {
if(json.status == 'success') {
window.parent.location.href = json.returnUrl;
window.parent.$.fancybox.close();
} else {
$('#slfErrorAlert').show();
$('.spispinner').hide();
$maindiv.removeAttr("disabled");
$maindiv.removeClass("instaclass31");
}
}
});
});
我只能使用PHP,这是我到目前为止使用SimpleTest中的SimpleBrowser
库生成的:
$browser = new SimpleBrowser();
$str = '?username=aaa&password=bbb&antiForgeryToken=d98188e0f56bafa75180591e38d189ee';
$json = json_encode($str);
$browser->post($httpsPage, $json);
我指定我不必使用这个库及其方法,但是例如我知道这也可以使用cURL
完成,虽然我不知道如何。
当我启动脚本时,我认为从POST服务器输出通用{"status":"error"}
我错过了什么?
根据@Andy使用json_encode
更正语法:(仍然是相同的错误消息):
$data = array('username' => 'aaa', 'password' => 'bbb');
$json = json_encode($data);
答案 0 :(得分:0)
根据#backpropagation
L2_error = y - L2
的{{1}}文档页面,您必须绕过此方法的数组。您可以在此处找到更多详细信息:http://php.net/manual/en/function.json-encode.php
在你的情况下,你可能需要建立这样的东西:
PHP
答案 1 :(得分:0)
尝试使用curl:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $httpsPage);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'username='.rawurlencode('aaa').'&password='.rawurlencode('bbb').'&antiForgeryToken=d98188e0f56bafa75180591e38d189ee');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
curl_close ($ch);
print_r($server_output);
或者尝试使用您的代码而无需编码为json post vars:
$browser = new SimpleBrowser();
$str = '?username='.rawurlencode('aaa').'&password='.rawurlencode('bbb').'&antiForgeryToken=d98188e0f56bafa75180591e38d189ee';
$browser->post($httpsPage, $str);
响应将采用json格式,但是post vars我不认为它们应该是。从jQuery .ajax help:dataType(默认值:Intelligent Guess(xml,json,script或html))您希望从服务器返回的数据类型。