JSON解析:PHP代码到ASP

JSON解析:PHP代码到ASP,php,mysql,asp-classic,json,Php,Mysql,Asp Classic,Json,在我的测试中,我使用PHP转换json字符串,将其插入mysql数据库 以下是php文件的外观: if (isset($_GET['data'])) { // Is er data binnengekomen, zoja voer dan de rest uit $data = json_decode($_GET['data'], true); $id = $data['id']; //Het personeelsnummer $latitu

在我的测试中,我使用
PHP
转换
json
字符串,将其插入
mysql
数据库

以下是php文件的外观:

if (isset($_GET['data'])) {  // Is er data binnengekomen, zoja voer dan de rest uit
$data = json_decode($_GET['data'], true); 
$id = $data['id'];                          //Het personeelsnummer
$latitude = $data['latitude'];              // De latitude (coordinaten)
$longitude = $data['longitude'];            // De longitude (coordinaten)
$timestamp = $data['timestamp'];            // De tijd

$result = mysql_query("SELECT * FROM locatie WHERE id='$id'");      //Kijken of het personeelsnummer al in de database staat of niet
if(mysql_num_rows($result)>0)                                       //Hier wordt de functie uitgevoerd als het al in de database staat
{
$query = "Update locatie                                            
SET     longitude = '$longitude',
   latitude = '$latitude',
   timestamp = '$timestamp'
WHERE id = '$id'";  

$result = mysql_query($query) or die('Query failed: ' . mysql_error());
echo "OK";

// Voer de $query(de Update Functie) uit
mysql_free_result($result); 

    }                               // Als het er in staat, Update alle waardes die voor het personeelsnummer gelden. Wordt dus geen geschiedenis opgeslagen
else                                                                    //Hier wordt de functie uitgevoerd als het nog niet in de database staat

{
//Als het een nieuw nummer is
$query = sprintf("INSERT INTO locatie (id, longitude, latitude, timestamp) VALUES ('%s', '%s', '%s', '%s') ", mysql_real_escape_string($id) , mysql_real_escape_string($longitude),    mysql_real_escape_string($latitude), mysql_real_escape_string($timestamp));}               // Als het er nog niet instaat voeg dan het personeelsnummer in en de andere waardes.         



$result = mysql_query($query) or die('Query failed: ' . mysql_error());
echo "OK";

// Voer de $query(de Insert Functie) uit
mysql_free_result($result);
}
这工作得非常好,但该公司要求它应该在ASP

但关键是,我只是不擅长asp

这是我的密码:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Naamloos document</title>
</head>

<body>

    <% 
    Dim sConnection, objConn , objRS 

    sConnection = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=Your_Mysql_DB;   UID=mysql_username;PASSWORD=mysql_password; OPTION=3" 

    Set objConn = Server.CreateObject("ADODB.Connection") 

    objConn.Open(sConnection) 

    If Request.Form("data") <> "" Then

    Request.QueryString["id"] 
    Request.QueryString["longitude"] 
    Request.QueryString["latitude"] 
    Request.QueryString["timestamp"] 

    Set objRS = objConn.Execute("SELECT * FROM locatie WHERE id='id'")



    If objRS <> "" Then
    Set objRS = objConn.Execute("Update locatie                                             
    SET     longitude = 'longitude',
       latitude = 'latitude',
       timestamp = 'timestamp'
    WHERE id = 'id'")
    Else
    Set objRS = objConn.Execute("INSERT INTO locatie (id, longitude, latitude, timestamp)  VALUES ('id', 'longitude', 'latitude', 'timestamp') ")
    End If




    objRS.Close
    Set objRS = Nothing
    objConn.Close
    Set objConn = Nothing
    %>

    </body>
    </html>
编辑

所以我的问题是:


如果ASP与PHP文件一样工作。我不知道我是否使用了正确的方法来解码json,如果我在数据库中使用了正确的方法,如果我在数据库中使用了正确的方法来解析json,如果我使用了正确的方法来解析json,如果我在数据库中使用了正确的方法,ASP与php只有细微的相似,但是ASP的扩展、API等更少

根据定义,ASP(经典ASP)很久以前就被弃用了,并且只在当前的windows版本中使用,只是为了符合向后兼容性。但是这种语言不再是由米科索夫特开发的

说到这里,您必须知道ASP本身不能解析JSON,相反,您需要实现一个外部库,您可以查看更多信息

在其他方面,我注意到您的代码中存在一些错误:

  • 在Request.QueryString[XXXXXX][]中,字符无效,请改用()
  • 如果Request.Form(“data”)“那么

您将Request.Form和Request.Querystring集合混为一谈。 因为在您的示例中,您在querystring(GET)中发送数据,所以应该使用Request.querystring集合

因此,ln20应该是

If Request.Querystring("data") <> "" Then
If Request.Querystring(“数据”)“”则
而不是

If Request.Form("data") <> "" Then
If Request.Form(“数据”)“”则
如果json顺利通过,也很难评估。。 您可以使用response.write Request.Querystring(“数据”)来测试这一点,以查看实际的jsonstring。我建议使用jsonlint.com

编辑: 最后,正如Rafael在另一篇文章中提到的,您确实需要第三方库,因为没有内置的json_解码模拟。
我个人喜欢SO post的解决方案,他们建议使用Douglas Crockford的json2.js javascript库serverside。

@PaoloFalabella我刚刚在我的问题-问题概念中编辑了这个问题……PHP和ASP中与sql相关的部分都不需要。您的问题是“如何在ASP中解码JSON”。只向我们展示ASP代码的一部分,告诉我们您从google结果中尝试了什么。如果ASP不推荐使用,您会建议使用什么?建议是相对的我已经迁移到PHP,如果您决定留在Microsoft sideYes,您可以尝试使用ASP.net,但该公司要求使用非php,因为iis现在只接受windows产品,不想在iis中启用php。谢谢您的回复。我明天会测试这个。我现在没有任何权限。我还有问题的时候会告诉你的
If Request.Form("data") <> "" Then