当我将POST发送到PHP页面时,echo的数据仍会回复给我,但jQuery AJAX表示它并不成功。为什么会这样?而且,一旦我收回数据,我怎样才能真正“打印”出数据呢?
我的PHP如下:
<?php
$userEmail = $_POST['username'];
$userPassword = $_POST['password'];
//Login Function
$data = array("username" => $userEmail, $userPassword => "password");
$data_string = json_encode($data);
$ch = curl_init('http://*****/****/**/Login');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, 1 );
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json')
);
$result = curl_exec($ch);
$obj = json_decode($result);
echo $obj;
echo '<br /><br />';
echo '<b>Each array and objects in table:</b> <br />';
echo '<hr>';
echo '<br />';
echo '<table border="1">';
echo '<tr><td>Medical Entity:</td><td>Date:</td><td>Type:</td><td>ID:</td></tr>';
foreach ($obj as $key => $value) {
echo '<tr>';
echo '<td>' . $value->date . '</td>';
echo '<td>' . $value->Name . '</td>';
echo '<td>' . $value->dealType . '</td>';
echo '<td>' . $value->id . '</td>';
echo '</tr>';
}
echo '</table>';
?>
jQuery AJAX如下:
<div id="test">
Testing Stuff!
</div>
<script>
$(document).ready(function() {
$('#submit').click(function () {
var username = '***@****.com';
var password = 'password';
var data = '&username=' + username + '&password=' + password;
$.ajax({
type: "POST",
url: "/****/data.php",
data: data,
dataType: "json",
success: function(e){
for(var i=0;i<e.length;i++){
document.write(e[i]);
}
},
error: function(e){
for(var i=0;i<e.length;i++){
$('#test').html(e[i]);
}
});
//cancel the submit button default behaviours
return false;
});
});
</script>
我的最终目标是通过AJAX将我从PHP页面获取的数据写入我的HTML页面上的DIV。
答案 0 :(得分:1)
您正在使用dataType: json
调用您的php函数,这意味着jQuery期望返回JSON结果。你的php文件正在返回HTML。删除dataType:JSON设置。
传递给success
函数的变量不是数组。您只需要执行$('#test').html(e);
答案 1 :(得分:0)
您的代码存在很多问题。
我知道你正在尝试发送JSON,但是你做错了。首先,您尝试使用json_decode($php_object)
获取JSON数据,但您应该使用json_encode($php_object)
,因为您必须将PHP对象编码为JSON表示法(这是一个字符串)。然后你将HTML附加到这个JSON,这是没有意义的。你应该这样做:
$json_output = json_encode(
array(
"result" => $result,
"html" => $some_html_you_generated_before
)
)
然后在Javascript中,您只需使用data.result
和data.html
访问您的数据。
我不知道你为什么使用curl :)。暂时忘记它并在{J}数据header('Content-Type: application/json);
之前使用echo
。