我正在开发一个在前端使用jQuery Ajax,在后端使用PHP 5.5.15和SQL Server 2014的项目。我已经安装了用于PHP 5.5的驱动程序,以便从http://robsphp.blogspot.co.uk/2012/06/unofficial-microsoft-sql-server-driver.html与SQL Server进行通信,因为到目前为止,Microsoft尚未提供针对PHP 5.5和5.6的驱动程序(已经一年多了,人们对此表示抱怨,但是,回到现在)。
这是我的Ajax调用,用于执行PHP代码服务器端:
$.ajax({type: 'post',
async: false,
url: 'pairrequestsfromdb.php',
data: {
toemail: toEmail
},
success: function (result) {
alert(result);
}
}
);
从这个角度来看,这很好。现在,PHP代码连接到SQL Server数据库并查询一些信息。在PHP SQL查询的结果仅包含一行的情况下,我想以任何可能的形式将该行的内容返回给JavaScript,以便可以在其中使用。这是PHP代码:
$serverName = "WIN-LV4K7BSUPJO";
try
{
$conn = new PDO("sqlsrv:server=$serverName;Database=myDB", "myUser", "myPass");
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$setDB = $conn->prepare("USE [myDB]");
$setDB->Execute();
$tsql = "SELECT [col1],[col2],[col3] FROM [dbo].[Table] WHERE col3 = ?";
$params = array($myParam);
$checkPairRequests = $conn->prepare($tsql);
$checkPairRequests->execute($params);
$pairrequests = $checkPairRequests->fetchAll(PDO::FETCH_ASSOC);
$requestCount = count($pairrequests);
if ($requestCount > 1)
{
die("BAD BAD BAD");
}
else if ($requestCount == 0)
{
echo "no requests, sign up as pre-request";
}
else if ($requestCount == 1)
{
// there is exactly one request in the database, all is ok, give ajax the entire row back
echo $pairrequests;
}
基本上,我依次使用prepare
,execute
和fetchAll
以获得结果。现在,我的问题是,如何才能以某种可用的形式(例如键-值字符串对,甚至只是值字符串对)将该似乎存储在数组中的结果返回给JavaScript?
一开始我只是想
echo $pairrequests;
其中,$pairrequests
是FetchAll查询的结果。但是,当我这样做时,我没有得到实际的内容,我得到了:
我的下一个方法是查看数组中的各个项目是否是字符串,所以我这样做了:
$row = "";
foreach ($pairrequests as $column)
{
$row = $row . $column;
}
echo $row;
但是,这给出了类似的错误。那么,是否有人对我如何获取和传递结果行的内容(以字符串形式或其他形式)返回JavaScript有任何见解?
感谢您的所有帮助,
最好的祝福,
克里斯
参考方案
在PHP中,使用json_encode()对记录进行编码。
echo json_encode($pairrequests);
在JS中,将dataType
调用的$.ajax()
设置为"json"
,并且success
回调的参数将是一个Javascript对象,其中包含记录中的数据:
success: function (records) {
alert(records[0].col1 + records[0].col2 + [...]);
}
jQuery val函数在隐藏字段上不起作用? - javascript这是我的HTML代码:<div style='display:none;' id='allformid'> <div> <form action='#'> <input type='text' name='name' …
在访问另一页面后保留浏览器滚动位置 - php我正在使用JS,JQuery和PHP,试图解决无限滚动问题。问题是,如果您在页面上滚动很长一段时间,并且用ajax加载了更多页面,然后单击链接转到新页面,那么在使用浏览器时如何自动转到旧页面中的同一位置新页面上的返回按钮?。新页面使用ajax滚动加载。 php参考方案 我想出的解决方案是在离开页面之前,将每个页面与相关数据一起存储。需要以下信息来保持滚动位置…
写一行到javascript文件 - javascript我正在使用数组来显示网站中的一些图像:var paintingImages; paintingImages = [ { url: 'images/objects/ron.jpg', alt: 'ron' } ]; 该js代码写在paintings.js中,我的主要js代码写在main.js文件中我已经为艺术家制作了这个…
验证php中的javascript对象 - php在我的用户界面中,用户可以构建一些javascript对象,例如:var box = { "width": "100px", "height": "200px", "click": function () { alert("You clicked t…
我如何反序列化字符串? - php我有一个菜单系统,该菜单系统使用拖放树结构来使用户易于修改。当javascript对字符串进行序列化时,它会通过以下方式进行处理:// Assume each of these items has an ID on with the respective numbers attached Menu Item 1 + Menu Item 2 + Menu It…