gpt4 book ai didi

php - extjs 4.2 在编辑时创建 "post"请求而不是 "put"

转载 作者:行者123 更新时间:2023-11-29 01:57:40 26 4
gpt4 key购买 nike

我正在开发带有 php mysql 后端的 extjs 4.2 应用程序。我可以通过表单添加记录来存储。比使用代理存储自动同步向 mysql 添加新记录。但是,它不会创建“放置”请求,而是创建“发布”请求。我看过关于同一问题的其他示例,其中大部分指向配置模型的 idProperty。

我的前端根据唯一模型 ID 的存在使用表单创建新的/POST 或编辑现有的/PUT

商店使用ajax代理

        Save controller:
var form = this.getAnnDetailsPanel1().getForm();
var formData = form.getFieldValues();
//console.log(formData);

var a = form.findField('annID');
var b = a.getValue();
//console.log(b);
if(!b)
{
//console.log("record doesnt exist - Add Record");
var store = Ext.data.StoreManager.get('announcementStore');
var sss = store.add(formData);
}
else
{
console.log("record exist - Edit Record");
var ttt = form.getRecord();

uuu = form.updateRecord(ttt);
ttt.commit();
console.log(ttt);

}

php文件:

        <?php
header('Content-Type: application/json');

$method = $_SERVER["REQUEST_METHOD"];
$con = new PDO("mysql:host=localhost;dbname=openclass", "root", "") or die("cannot connect to mysql");

switch ($method) {
case "GET": // Return all records
$ClassID = $_GET["ClassID"];
$sql = "SELECT * FROM announcement " .
"WHERE ClassID = $ClassID " .
"ORDER BY annID";

$sql = $con->prepare($sql);
$sql->execute();
$rows = array();

while ($row = $sql->fetch(PDO::FETCH_OBJ)) {
$rows['data'][] = $row;
}

echo json_encode($rows, JSON_NUMERIC_CHECK);

break;

case "PUT": // Update existing record, requires ID
$postData = getPostData();
$annID = getPostValue($postData, 'annID');
$ClassID = getPostValue($postData, 'ClassID');
$annHeading = getPostValue($postData, 'annHeading');
$annContent = getPostValue($postData, 'annContent');

$sql = "UPDATE announcement " .
"SET ClassID = '$ClassID' " .
" annHeading = '$annHeading' " .
" annContent = '$annContent' " .
"WHERE annID = '$annID' ";

$sql = $con->prepare($sql);
$result = $sql->execute();

break;

case "POST": // New record
$postData = getPostData();
$ClassID = getPostValue($postData, 'ClassID');
$annHeading = getPostValue($postData, 'annHeading');
$annContent = getPostValue($postData, 'annContent');

$sql = "INSERT INTO announcement (ClassID, annHeading, annContent) " .
"VALUES ('$ClassID','$annHeading', '$annContent')";

$sql = $con->prepare($sql);
$result = $sql->execute();



break;

case "DELETE": // Delete existing record, requires annID
$postData = getPostData();
$annID = getPostValue($postData, 'annID');

$sql = "DELETE FROM announcement " .
"WHERE annID = '$annID' ";

$sql = $con->prepare($sql);
$result = $sql->execute();

if (! $result) {
echo "{\"success\": false}";
} else {
echo "{\"annID\": $annID}";
}

break;
}

$con = null;

function getPostData() {
$fileContents = file_get_contents("php://input");
return json_decode($fileContents, true);
}

function getPostValue($postData, $fieldName) {
return (!empty($postData[$fieldName]) ? htmlspecialchars($postData[$fieldName]) : NULL);
}

?>

最佳答案

如果您打算继续使用 Ajax 代理,您可以调整 actionMethods 属性来指定应该使用哪些 HTTP 动词来创建、更新等。

http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.data.proxy.Ajax-property-actionMethods

或者(可能更好),您可以使用 Rest 代理让 Ext JS 分配动词并自动生成适当的 URL。

http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.data.proxy.Rest

关于php - extjs 4.2 在编辑时创建 "post"请求而不是 "put",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23978753/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com