2017-04-12 75 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;