[英]Send JSON data via POST PHP instead of Ajax version
我必须创建一个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);
根据json_encode
的PHP
文档页面,您必须将数组绕过此方法。 您可以在这里找到更多详细信息: http : //php.net/manual/en/function.json-encode.php
在您的情况下,您可能需要构建以下内容:
$reqData = array('user' => 'foo', 'eamil' => 'bar@baz');
// {"user":"foo","email":"bar@baz"}
json_encode($reData);
尝试卷曲:
$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变量进行编码:
$browser = new SimpleBrowser();
$str = '?username='.rawurlencode('aaa').'&password='.rawurlencode('bbb').'&antiForgeryToken=d98188e0f56bafa75180591e38d189ee';
$browser->post($httpsPage, $str);
响应将采用json格式,但我认为不应该使用post var。 从jQuery .ajax帮助中 :dataType(默认值:Intelligent Guess(xml,json,脚本或html))您期望从服务器返回的数据类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.