2016-04-27 6 views
0

Ich versuche, PHP-Variable $last_id zu AJAX echo zu PHP $_POST übergeben. Möglicherweise kann ich AJAX alle zusammen überspringen und Variable einfach in $_POST übertragen. Muss ich echo json_encode verwenden?PHP-Code in AJAX zu POST

Hier ist mein Code, um zu sehen, was ich versuche, hier zu erreichen (jede Hilfe dankbar):

registration.php

<?php 
if(isset($_POST['submit'])) { 
require 'connect.php'; 

$sql = "INSERT INTO table (username, password) VALUES ('".$_POST["username"]."','".$_POST["password"]."')"; 

if (mysqli_query($con, $sql)) { 
$last_id = mysqli_insert_id($con); 
    echo $last_id; 
?> 

MyScript.js

// ----AJAX Post to PHP-----> 
function ajax_post(ele,div){ 
// XMLHttpRequest object 
var hr = new XMLHttpRequest(); 

// variables send to PHP file 
var url = "insert.php"; 
var userId = "<?php echo $last_id; ?>"; 
var vars = "userId="+userId; 
hr.open("POST", url, true); 
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
hr.onreadystatechange = function() { 
    if(hr.readyState == 4 && hr.status == 200) { 
     var return_data = hr.responseText; 
     document.getElementById("status").innerHTML = return_data; 
     } 
    } 
} 

insert.php

<?php 
require 'connect.php'; 

$userId = $_POST['userId']; 

$sql = "INSERT INTO table2 (userId) 
VALUES ('$userId')"; 
?> 
+1

Vergessen Sie nicht, vor userId setzen & amp Charakter: var vars = "ImgName =" + SOMETHING_IS_MISSING_HERE + "& userId =" + userId; – Ashraf

+4

Paar Dinge, fügen Sie Variablen nicht direkt in die Abfrage wie '" INSERT INTO Tabelle (Benutzername, Passwort) VALUES ('". $ _ POST [" Benutzername "]."', '". $ _ POST [" Passwort "] . '') "' oder this "" INSERT INTO table2 (userId) VALUES ('$ userId') "'. Dies ist eine Sicherheitslücke. – Rasclatt

+3

Auch Ihre 'myScript.js' können PHP nicht parsen, so dass diese' 'kann nicht funktionieren. – Rasclatt

Antwort

0

Hallo dies ist, wie Sie PHP-Variable in externe JS-Datei,

<?php 
$last_id= "Red"; 
?> 
<script type="text/javascript">var color = "<?= $last_id?>";</script> 
<script type="text/javascript" src="myscript.js"></script> 

Versuch und lassen Sie mich

+0

Dies ist, was ich in meiner Datenbank bekomme Ich brauche mysqli_insert_id Daten in meinem Fall übertragen werden ... –

+0

@ Sergey M. sorry Tippfehler ' ' – JiteshNK

0

Wie geposteten Code kennen passieren können Sie hr.send(vars) fehlen und wie ich sehe Ihre $last_id kommt nach der Registrierung. Also schlage ich vor, dass Sie diesen Wert in der Sitzung speichern und dann verwenden und nach einem Ajax-Aufruf die Sitzung bei Bedarf zerstören.

<?php 
if(isset($_POST['submit'])) { 
require 'connect.php'; 

$sql = "INSERT INTO table (username, password) VALUES ('".$_POST["username"]."','".$_POST["password"]."')"; 

if (mysqli_query($con, $sql)) { 
$last_id = mysqli_insert_id($con); 
session_start(); 
$_SESSION['last_id'] = $last_id; 
?> 

// ----AJAX Post to PHP-----> 
function ajax_post(ele,div){ 
// XMLHttpRequest object 
var hr = new XMLHttpRequest(); 

// variables send to PHP file 
var url = "insert.php"; 
var vars = "userId=<?php echo $_SESSION['last_id']; ?>"; 
hr.open("POST", url, true); 
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
hr.onreadystatechange = function() { 
if(hr.readyState == 4 && hr.status == 200) { 
    var return_data = hr.responseText; 
    document.getElementById("status").innerHTML = return_data; 
    } 
    } 
} 
hr.send(vars);