У меня возникли проблемы с передачей моего массива javascript в файл php. Я знаю, что массив JS имеет правильные входные данные пользователя, потому что я тестировал это с помощью toString() и печатал массив на моей веб-странице. Мой план состоял в том, чтобы использовать отправку массива JS в мой php-скрипт с использованием AJAX, но я новичок в использовании AJAX, поэтому есть хороший шанс, что я делаю что-то неправильно. Я просматриваю много разных сообщений людей, имеющих эту же проблему, но все, что я пробовал, пока не работает. Все, что я знаю на данный момент, это то, что JS имеет данные в массиве отлично, но когда я пытаюсь передать его в php-файл через AJAX, php-скрипт не получает его. Я знаю это, потому что продолжаю получать неопределенные переменные ошибки. Чтобы быть полностью честным, я не уверен, что проблема в том, как я пытаюсь передать массив скрипту php или если он пытается запросить и присвоить значения массива переменным на стороне php. На данный момент мой код выглядит следующим образом:Передача массива javascript в php через jquery AJAX
My Javascript:
function createAsset(str, str, str, str, str, str, str, str, str)
{
var aID = assetID.value;
var aName = assetName.value;
var pPrice = purchasedPrice.value;
var pDate = purchasedDate.value;
var supp = supplier.value;
var cValue = currentValue.value;
var aOwner = actualOwner.value;
var wEdate = warrantyExpiryDate.value;
var dDate = destroyedDate.value;
//document.write(aID);
//var dataObject = new Array()
//dataObject[0] = aID;
//dataObject[1] = aName;
//dataObject[2] = pPrice;
//dataObject[3] = pDate;
//dataObject[4] = supp;
//dataObject[5] = cValue;
//dataObject[6] = aOwner;
//dataObject[7] = wEdate;
//dataObject[8] = dDate;
//dataObject.toString();
//document.getElementById("demo").innerHTML = dataObject;
var dataObject = { assitID: aID,
assitName: aName,
purchasedPrice: pPrice,
purchasedDate: pDate,
supplier: supp,
currentValue: cValue,
actualOwner: aOwner,
warrantyExpiryDate: wEdate,
destroyedDate: dDate };
$.ajax
({
type: "POST",
url: "create_asset_v1.0.php",
data: dataObject,
cache: false,
success: function()
{
alert("OK");
location.reload(true);
//window.location = 'create_asset_v1.0.php';
}
});
}
Мой PHP:
<?php
// Get Create form values and assign them to local variables.
$assetID = $_POST['aID'];
$assetName = $_POST['aName'];
$purchasedPrice = $_POST['pPrice'];
$purchasedDate = $_POST['pDate'];
$supplier = $_POST['supp'];
$currentValue = $_POST['cValue'];
$actualOwner = $_POST['aOwner'];
$warrantyExpiryDate = $_POST['wEdate'];
$destroyedDate = $_POST['dDate'];
// Connect to the SQL server.
$server='PC028\ZIRCONASSETS'; //serverName\instanceName
$connectinfo=array("Database"=>"zirconAssetsDB");
$conn=sqlsrv_connect($server,$connectinfo);
if($conn)
{
echo "Connection established.<br/><br/>";
}
else
{
echo "Connection couldn't be established.<br/><br/>";
die(print_r(sqlsrv_errors(), true));
}
// Query the database to INSERT record.
$sql = "INSERT INTO dbo.inHouseAssets
(Asset_ID, Asset_Name, Perchased_Price, Date_Perchased, Supplier, Current_Value, Actual_Owner,Worranty_Expiry_Date, Destroyed_Date)
VALUES
(?, ?, ?, ?, ?, ?, ?, ?, ?)";
$params = array($assetID, $assetName, $purchasedPrice, $purchasedDate, $supplier, $currentValue, $actualOwner, $warrantyExpiryDate, $destroyedDate);
// Do not send query database if one or more field have no value.
if($assetID && $assetName && $purchasedPrice && $purchasedDate && $supplier && $currentValue && $actualOwner && $warrantyExpiryDate && $destroyedDate != '')
{
$result = sqlsrv_query($conn, $sql, $params);
// Check if query was executed with no errors.
if($result === false)
{
// If errors occurred print out SQL console data.
if(($errors = sqlsrv_errors()) != null)
{
foreach($errors as $error)
{
echo "SQLSTATE: ".$error[ 'SQLSTATE']."<br/>";
echo "code: ".$error[ 'code']."<br/>";
echo "message: ".$error[ 'message']."<br/>";
}
}
}
else
{
echo "Record Created!<br/>";
}
}
// Close server connection
sqlsrv_close($conn);
if($conn)
{
echo "<br/>Connection still established.";
}
else
{
echo "<br/>Connection closed.";
}?>
Так же, как дополнительная информация, если ее не видно из моего кода я пытаюсь отправить пользователю данные из html-формы в php-скрипт, которые обрабатывают его и используют для запроса базы данных MSSQL. Эта функция, над которой я сейчас работаю, - это функция создания базы данных create.
ключи массива неправильно, что вы используете. –
Почему вы запускаете функцию с теми же атрибутами несколько раз здесь? CreateAsset (str, str, str, str, str, str, str, str, str) '... ??? – Novocaine
Я предположил, что каждое жало, которое я передавал в функцию, должно быть объявлено как параметры функции. – Yanmears