2017-04-12 116 views
0

我有一个功能,这个角码:角不发送HTTP POST正确

function doAjax() { 

       $http({ 
         method: 'POST', 
         url: 'http://thatsmyipv4address/MarkBeacons/www/test.php', 
         data: { 
          'dispositivo': getDevice(), 
          'momentoacceso': getMomentoExacto() 
         } 
        }) 
        .then(function (data) { 
         alert("Data Saved: " + data.response); 
         console.log(data); 
        }, function (error) { 
         //alert('error: ' + error); 
         console.log('error: ' + error.data); 
        }); 
      } 

当我打电话doAjax()但同时必须发出POST消息,我test.php的getDevice()返回值一个String和getMomentoExacto(),它返回另一个String。

但是,当我执行test.php的

$link = mysqli_connect("localhost", "root", "", "markbeacons"); 

if(isset($_POST['dispositivo'])) { 
    $dispositivo = $_POST['dispositivo']; 
} else { 
    $dispositivo = 'valor1'; 
} 

if(isset($_POST['momentoacceso'])) { 
    $momentoacceso = $_POST['momentoacceso']; 
} else { 
    $momentoacceso = 'valor2'; 
} 

echo "$dispositivo"; 
echo "$momentoacceso"; 

$sql = "INSERT INTO registroEstimote (dispositivo, momentoconexion) VALUES ('$dispositivo', '$momentoacceso');"; 

为什么它插入我的数据库中的其他值(valor1和valor2)?

+0

检查什么数据被发送到'test.php'的开发工具,网络选项卡。如果您的'test.php'位于项目的根文件夹中,则可以使用'url:'/ test.php'' –

+0

检查您的网络控制台是否正在向服务器发送正确的数据? –

回答

1

的$ http.post和$ http.put方法接受任何JavaScript对象(或字符串 )作为其数据参数。如果数据是JavaScript 对象,则默认情况下它将转换为JSON字符串。

你忘了添加此行

headers: {'Content-Type': 'application/x-www-form-urlencoded'} 


$http({ 
     method: 'POST', 
     url: 'http://thatsmyipv4address/MarkBeacons/www/test.php', 
     data: $.param({ 
      'dispositivo': getDevice(), 
      'momentoacceso': getMomentoExacto() 
     }), 
     headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
    }) 
    .then(function (data) { 
     alert("Data Saved: " + data.response); 
     console.log(data); 
    }, function (error) { 
     //alert('error: ' + error); 
     console.log('error: ' + error.data); 
    }); 
+0

它的工作原理!谢了哥们 ;) –

0

PHP未按照您的预期填充$ _POST。

后的数据就可以实现这一点:

$postdata = file_get_contents("php://input"); 

为了让你有json_decode()正确的字段是:

$request = json_decode($postdata); 
$dispositivo = $request->dispositivo; 
$momentoacceso = $request->momentoacceso;