簡體   English   中英

即使更新數據庫,AJAX也不會成功

[英]AJAX not coming up a success even though its updating the database

我的php正在更新表格,但未在javascript中刷新,因此嘗試了幾種不同的方法來執行此操作,但沒有任何效果。 的PHP

$sql = "UPDATE INTOXDM.ASTP_FORM SET SUPERVISOR_EID = '".$newSuper."' WHERE FORMID = '".$formId."'";
$row = $xdm->fetch($sql);

$return["color"] = $row['APPRENTICE_SIGNATURE'];

$return["json"] = json_encode($return);
echo json_encode($return);
?>

Javascipt

var data = {
    "formId": formID,
    "newSuper": newSuper
};
data = $.param(data);
$.ajax({
    type: "POST",
    dataType: "json",
    url: "src/GetInfo.php", 
    data: data,
success: function() {
    location.reload();
}

});

我將從修改如下代碼開始:

var data = {
    "formId": formID,
    "newSuper": newSuper
};

// No need for serialization here, 
// the 'data' parameter of jQuery.ajax accepts JS object
// data = $.param(data);

$.ajax({
    type: "POST",
    dataType: "json", 
    url: "src/GetInfo.php", 
    data: data,

    // As suggested by Rocket Hazmat, try to add an error callback here
    error: function(jQueryXHR, textStatus, errorMessage) {
        console.log("Something went wrong " + errorMessage);
    },

    success: function(jsonResponse) {
        // Try to reference the location object from document/window
        // wd = document or window as seen here http://stackoverflow.com/questions/2624111/preferred-method-to-reload-page-with-javascript
        // Also watch out, usually browsers require a user confirmation before reloading if the page contains POST data

        // One of these should be fine
        wd.location.assign(wd.location.href) : go to the URL
        wd.location.replace(wd.location.href) : go to the URL and replace previous page in history
        wd.location.reload(<true/false/blank>) : reload page from server/cache/cache
    }
});

另外,這可能是在黑暗中拍攝的,但是參數dataType在過去的某個時候給我帶來了問題,因此,如果您確定php腳本返回的json,則可以使用eval函數對響應進行json處理

$.ajax({
    ...

    // Remove data type
    // dataType: "json", 

    ...

    success: function(plainTextResponse) {
        // Eval response, NOT SAFE! But working
        var jsonResponse = eval('('+ plainTextResponse +')');

        ...
    }
});

您的ajax需要json數據,而您的php發送格式錯誤的json字符串。 發送正確的json字符串,您的腳本將正常運行。

您的php json_encode應該是這樣的:

$data = json_encode($return);
echo $data;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM